the 2nd edition: 20160303
用 qt 來開發 android app 的支援已經有一陣子, 但我期待著 qt 官方的版本, 我是個有耐心的開發者, 終於讓我等到 qt 5.1 官方的版本。
但是該怎麼開始呢?照著這篇裝很多東西:
http://doc-snapshot.qt-project.org/qt5-stable/qtdoc/android-support.html
在 qtcreator 設定好這些路徑。
執行
adt-bundle-linux-x86-20130522/sdk/tools/android
安裝 android 2.3.3 (api 10)
download for android version.
http://qt-project.org/downloads
選 project android arm gcc 4.4.3
這比之前的版本設定的東西應該還更簡單, but, 如果你夠幸運的話才是這樣的結果。中途遇到很多小問題, 陸續亂 try, 總算有個結果。
我試過好幾個平台
- ubuntu 10.04 64bit
- debian 32bit
- windows xp
qtcreator 無法開啟:
strace 結果顯示卡在 clock_gettime
clock_gettime(CLOCK_MONOTONIC, {5315, 458918574}) = 0 clock_gettime(CLOCK_MONOTONIC, {5315, 459187882}) = 0 poll([{fd=3, events=POLLIN}, {fd=6, events=POLLIN}, {fd=11, events=POLLIN}, {fd=13, events=POLLIN}, {fd=16, events=POLLIN}, {fd=22, events=POLLIN}], 6, 169541) = 1 ([{fd=3, revents=POLLIN}]) read(3, "\1\0\0\0\0\0\0\0", 16) = 8 clock_gettime(CLOCK_MONOTONIC, {5318, 204940484}) = 0 clock_gettime(CLOCK_MONOTONIC, {5318, 205176548}) = 0
Qt Creator 2.7.2:
http://qt-project.org/downloads
我自己 download 下載這版本, qt 5.1 裡頭的 qtcreator 不知道為什麼無法執行起來。
ant 無法正常工作:
http://stackoverflow.com/questions/17483682/qt-5-1-for-android-occurs-error-in-apache-ant/17538419#17538419
ant 和 jdk 並不容易搞定,交給 apt 就好, 我用 apt 安裝就沒遇到這問題了。
install jdk/ant:
sudo apt-get install openjdk-7-jre openjdk-7-jdk sudo apt-get install ant
模擬器:
有時候無法正常啟動模擬器執行程式, 很不穩定。
最後在 debian 32bit 環境成功:
uname -a
Linux debian-vm 3.9-1-686-pae #1 SMP Debian 3.9.8-1 i686 GNU/Linux
我已經很少用 IDE, 在 qtcreator 下, 直接按個 run 就通通搞定, 快樂是快樂, 不過 ide 下到底做了什麼事情, 不知道的感覺很不好。
稍微看了一下整個步驟, 大概就是用 ndk 編譯 qt 產生 .so, 然後 qtcreator 產生的 java 程式會使用 jni 來呼叫這個 .so, ant 會使用 qtcreator 產生的 build.xml 來完成剩下的步驟。我看了一下 build.xml, 要手工打造這個可能不容易, 看來還是需要 qtcreator。
ref: Java Native Interface(JNI) 簡介與教學
qtcreator option/android setting
這是 qtcreator 在 apt-get 後自己抓到的路徑:
ant location: /usr/bin/ant
openjdk location: /usr/lib/jvm/java-7-openjdk-i386
這個沒什麼功能的程式占了 21.72 MB, 也很耗記憶體, 看來不太能用, 等 qt 5.2 了。
20130902 補充:
若是遇到這情形:
http://qt-project.org/forums/viewthread/29299
我的作法是選用 api 17 version 的 emulator。
使用以下指令可以將 apk 複製到 emulator 上。
./adb install -r /home/descent/app1/android/bin/App1-debug-unaligned.apk
ref: http://developer.android.com/tools/help/adb.html我實在不喜歡操作 qtcreator 這個大怪物, 使用以下 command line 編譯產生 app1.apk:
export ANDROID_NDK_ROOT=/home/descent/android-dev/android-ndk-r8e
~/android-dev/qt51/5.1.0/android_armv7/bin/qmake ~/app1/app1.pro
ant clean debug
上傳到 emulator:
descent@descent-u:platform-tools$ ./adb devices
List of devices attached
emulator-5554 device
./adb install -r ~/app1/android/bin/App1-debug.apk
2620 KB/s (671473 bytes in 0.250s)
pkg: /data/local/tmp/App1-debug.apk
Success
qt 5.X alpha 出了, 來試試: qt 5.4 alpha for android
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。