手邊沒機器,先收集一下資料。
【環境】
- Ubuntu 9.10
- android-lighthouse (此為非官方的 Qt on Android 套件)
【注意】
- 基於 Issue 19 (Linux build problem, cannot ope libcloog-ppl.so.0),建議採用Ubuntu 9.10以上版本。
- 基本 Issue 29 (BUILD FAILURE error: GraphicsJNI.h: No such file or directory),建議採用qadk 4.1以上版本。
- 請先安裝Ubuntu 所需套件
$ apt-get install build-essential $ apt-get install libcloog-ppl-dev
【下載】
既然要在 Android 寫 Qt 的程式,我們需要兩個客製化過的工具。
- QADK (改良自 Google for Android 的 NDK,可以把它想像成 toolchain/sdk)
$ wget http://android-lighthouse.googlecode.com/files/qadk-1.x-2.x-rtti-exceptions.tar.lzma $ tar xvfa qadk-1.x-2.x-rtti-exceptions.tar.lzma
- android-lighthouse (改良自 Qt)
$ wget http://android-lighthouse.googlecode.com/files/qadk-r4-1.tar.bz2
【基本環境設定步驟】
- 先把 QADK 搬到 /usr/local
$ mv qadk/ /usr/local/
- 進入 ${android-lighthouse}/mkspecs/android-g++/qmake.conf,更改檔案內容
- NDK_ROOT 指的是 qadk 位置,這邊維持原本設定
NDK_ROOT = /usr/local/qadk
- ANDROID_PLATFORM 指的是 android 版本,目前還沒手機,所以先用原本設定
ANDROID_PLATFORM = android-5 # 4 - android 1.6 # 5 - android 2.0 & 2.1 # 8 - android 2.2
- NDK_ROOT 指的是 qadk 位置,這邊維持原本設定
- 進入 androidconfig.sh,選擇要使用動態還是靜態函式庫(TBD)
- 執行 androidconfig.sh,這類似 configure 的動作
$ sudo ./androidconfig.sh
- make Qt, 目前 Ubuntu 是裝在 VMware,只有設定一顆 CPU
$ sudo make -j 1
- (tbd)
【編譯Qt 程式步驟】
在 Android 上執行 Qt 程式有兩個方法(官方說法有三個,不過對我而言,我只以是否和Java有關系作區分)
- 透過 Java ,透過 apk 包裝的方式。
- 不過過 Java,直接使用做成一個單獨的應用程式,請在專案檔(.pro)定義 TEMPLATE
TEMPLATE = app
【執行】
因為目前沒有機器,以後有機器再補。
【備註】
- 名詞說明
- jni(Java Native Interface)
- apk(Android Package)
- adb(Android Debug Bridge)
- Qt 專案檔(.pro 檔)參數
- Templates = app(Creates a Makefile to build an application.)
- Templates = lib (Creates a Makefile to build a library.)
【參考】
- android-lighthouse
http://code.google.com/p/android-lighthouse/wiki/Compile - Qt Port to Android platform
http://www.newlc.com/node/23522 - Android模擬器adb命令介紹
http://stenlyho.blogspot.com/2008/11/androidadb.html - [轉]Android JNI實例
http://huenlil.pixnet.net/blog/post/23801824 - qmake Project Files()
http://pepper.troll.no/s60prereleases/doc/qmake-project-files.html - apk安裝方法多圖詳解
http://www.qkshare.com/thread214755.html - Dalvik虛擬機
http://zh.wikipedia.org/zh-tw/Dalvik虚拟机 - Google釋出Android 1.5原生開發套件(可撰寫效率較高的Native Code,但會喪失基於Java VM Dalvik的跨處理器平台優勢)
http://loda.hala01.com/2009/06/google釋出android-1-5原生開發套件可撰寫效率較高的native-code但會/