linux debian unstable 32bit
- adt-bundle-linux-x86-20140702.zip
- android-ndk32-r10-linux-x86.tar.bz2
qt-creator-opensource-src-3.1.2.tar.gz- qt-opensource-linux-x86-android-5.3.1.run
- qt-everywhere-opensource-src-5.3.1.tar.gz
第三項是因為 qt-opensource-linux-x86-android-5.3.1.run 內附的 qt-creator 我每次都無法正常開啟, 所以我需要從 source code 編譯。
設定 qtcreator
tool/options/Build & Run/Qt Versions add /home/descent/Qt5.3.1/5.3/android_armv7/bin/qmake。
tool/options/android 設定 sdk, ndk
不過還好, qtcreator 已經用不到了,以下是全指令的編譯方式, 我已經受夠了按按紐只得到錯誤訊息, 根本編不出任何東西來。
以 /media/winxp/android-dev/qt-everywhere-opensource-src-5.3.1/qtbase/examples/widgets/itemviews/dirview/ 範例來介紹編譯流程:
export ANDROID_NDK_ROOT=/home/descent/and-dev/android-ndk-r10/ /home/descent/Qt5.3.1/5.3/android_armv7/bin/qmake dirview.pro descent@debianlinux:dirview$ ls android-libdirview.so-deployment-settings.json dirview.pro main.cpp Makefile descent@debianlinux:dirview$ make # 編譯出 libdirview.so, 一般的 qt 程式到這裡就結束了, android app 還有其他步驟要做。 make install INSTALL_ROOT=./android-build # 初使化 android build 目錄 /home/descent/and-dev/adt-bundle-linux-x86-20140702/sdk/tools/android 選擇 Tools/Manage AVDs, 先把模擬器執行起來。 /home/descent/Qt5.3.1/5.3/android_armv7/bin/androiddeployqt --input android-libdirview.so-deployment-settings.json --output ./android-build --deployment bundled --install --ant /usr/bin/ant --android-platform android-20 --jdk /usr/lib/jvm/java-7-openjdk-i386 --device emulator-5554 # 先建立 build.xml 讓 ant 使用, 再去 call ant 建立 apk, 並把 apk 傳到模擬器中 descent@debianlinux:platform-tools$ ./adb devices List of devices attached emulator-5554 device 到這裡應該可以在模擬器執行這個 app 了。 也可以從 /home/descent/and-dev/dirview/android-build 下 ant 指令 ant clean release 編譯出 *.apk /home/descent/and-dev/dirview/android-build/android-build/bin/*.apk
我有遇到以下紅色部份的錯誤訊息, 我不知道如何設定正確的路徑, 只好建立一個 symbolic link 到該路徑, 就沒有問題了, 也不用在啟動那個很大很慢的 qt creator 了。
Android build platform: android-20
Install to device: emulator-5554
Cannot find Android tool: /opt/android/sdk/tools/android
--android-platform android-17 android 4.2.2
--android-platform android-20 android 4.4w
我另外安裝了 api-17 for android 4.2.2。
你也許會好奇我怎麼知道這些指令的, 噢! 那個折磨我的 qt creator 裡頭有 log 可以看, 從裡頭挖出這些指令。
androiddeployqt 指令: http://qt-project.org/doc/qt-5/deployment-android.html
在手機上 (歌林 7 吋雙核雙卡手機平板) 的執行畫面 (3 apps):
檔案大小和所安裝需要的權限:
這是以 NDK 方式執行的, 應該有效率的優勢, 但是最近火紅的 zenfone 可能無法執行, 得要重編譯一個 x86 版本才行。
從 5.1, 5.2 到 5.3 總算讓我搞定開發環境了。
debian 64bit
env:debian 64bit
for run /home/descent/android-dev/adt-bundle-linux-x86_64-20140624/sdk/platform-tools/adb
adb 還沒有 64bit 版本, 需要安裝相對應的 i386 套件。
sudo dpkg --add-architecture i386 apt-get update sudo apt-get install libc6:i386 libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386 for android emulator sudo apt-get install libsdl1.2debian:i386
ref: http://stackoverflow.com/questions/2710499/android-sdk-on-a-64-bit-linux-machine
若用舊版 qtcreator 可能遇到這問題 (我覺得直接用最新版的 source code 編譯解決這問題比較好):
Qt5 for Android: incompatible ABI
http://stackoverflow.com/questions/22238649/qt5-for-android-incompatible-abi
QtCreator -> Projects -> BuildEnvironment add the variable
ANDROID_TARGET_ARCH = default/armeabi-v7a
/home/descent/Qt5.3.1/5.3/android_armv7/bin/androiddeployqt --input android-liba1.so-deployment-settings.json --output ./android-build --deployment bundled --install --ant /usr/bin/ant --android-platform android-17 --jdk /usr/lib/jvm/java-7-openjdk-amd64/ --device emulator-5554 --verbose
我很想測試一下 iOS 版本, 我也有 mac, 不過版本太舊, 無法執行 iOS toolchain, 所以等待未來購入新 mac 機器再來測試。
同樣的 source code, 可以產生 linux/X, windows, mac, android 這些平台的應用程式, 實在令人興奮, 這樣的投資很划算阿!
android 2.3.3 api 10
根據這份文件 Qt5.3 For Andoid 安装过程, 需要安裝Android armv5。會多出一個 Qt5.3.1/5.3/android_armv5/, 不過我使用這目錄的 qmake, androiddeployqt, 還是無法成功編譯出 android 2.3.3 的 app。
~/Qt5.3.1/5.3/android_armv5/bin/qmake dirview.pro /home/descent/Qt5.3.1/5.3/android_armv5/bin/androiddeployqt --input android-libdirview.so-deployment-settings.json --output ./android-build --deployment bundled --install --ant /usr/bin/ant --android-platform android-10 --jdk /usr/lib/jvm/java-7-openjdk-i386 --verbose
我似乎搞錯了, 查看 android-build/AndroidManifest.xml
41 <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14"/>
即可確認這個 android app 可以在哪個版本執行, 我在模擬器和真實機器 (twm amazing a1 android 2.3.3) 測試過, 可以正常執行。所以不需要特別下
--android-platform android-10 用 --android-platform android-20 就可以了。
ref:
Qtcreator 如果用apt來安裝的話,個人感覺是蠻容易也開得起來.但是也有問題.像是要用Hangee的
回覆刪除https://github.com/HanGee/OwaNEXT 不論我怎麼改QML Qtquick等 上面相關的head file 就是聯結不到==,明明檔案就存在.
也有可能是我太嫩 用法還是不對 Try過三次 目前呈現發呆中Orz
我也有遇過在 debian apt-get qtcreator 也是無法使用的狀況, 從 source code 編譯起來的版本似乎是最保險的。
回覆刪除