Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Qt for Android 部署流程分析

Qt for Android 部署流程分析

編輯:關於Android編程

今天為了測試使用 Qt Creator 3.0.0 開發的純 C 工程,利用了 Windows 下 Qt 5.2 for Android 開發入門裡創建的 HelloAndroid 工程,想把純 C 工程生成的 so 庫加到 HelloAndroid 工程中。結果加入進去了,但不會自動拷貝到生成目錄打包進 APK 。

研究了一個小時,大體搞明白了 Qt Creator 生成 APK 的流程。

首先 Qt Creator 會編譯時會生成一個 json 文件,就在工程目錄下,我的是 android-libhelloAndroid.so-deployment-settings.json 。內容如下:

{
   "description": "This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.",
   "qt": "C:\\Qt\\Qt5.2.0\\5.2.0\\android_armv7",
   "sdk": "E:/android-sdk-windows",
   "ndk": "E:\\Android\\android-ndk-r8d",
   "toolchain-prefix": "arm-linux-androideabi",
   "tool-prefix": "arm-linux-androideabi",
   "toolchain-version": "4.7",
   "ndk-host": "windows",
   "target-architecture": "armeabi-v7a",
   "android-extra-libs": "libhttpclient_test.so",
   "application-binary": "E:/qt/helloAndroid/libhelloAndroid.so"
}

上面文件裡的 application-binary ,實際上是一個 so 文件,在我這裡是 libhelloAndroid.so 。

要說明的是,編譯階段只會生成 so 文件,什麼事情不干。當你運行時,選擇了 Android 設備,Qt Creator 才開始執行一系列動作來生成 APK ,並 push 到設備上運行。大概步驟是這樣的:

創建構建目錄 拷貝 application-binary 拷貝 Qt 自己的庫和依賴的庫,如 libgnustl_shared.so 等。 根據模板拷貝 java 文件、生成 AndroidManifest.xml 、資源文件等等 調用 ant 編譯、打包、簽名、對齊 連接設備,install APK 並運行

這些動作都是由一個名為 androiddeployqt.exe 的程序完成的,感興趣的可以看它的源碼,Qt SDK 裡有,同時也可以在 Qt Creator 的輸出 panel 中看到 這個部署程序的輸出信息。更詳細的過程可以參考 Qt 官方文檔 Deploying Applications to Android Devices,那裡面說得很詳細。

說說我遇到的問題。我在 pro 文件裡使用 LIBS += -lxxx 加入了我的 C 庫,編譯通過,可是 androiddeployqt 沒有拷貝 libxxx.so ,APK 運行時找不到依賴的 libxxx.so 直接掛掉了。這個問題的解決,只要添加一個額外的依賴庫就可以了,Qt Creator 會傳遞參數給 androiddeployqt ,後者就會正確打包。

在 Qt Creator 中,選則 Projects > Run > Deploy configurations > Details ,可以看到下面的界面:


看圖片上畫藍線、籃圈的地方,就是這裡,添加你依賴的庫即可。

好啦,到這裡我們可以在純粹 C++ 的 IDE 當中進行 Android 的開發了,帶界面的、不帶界面的,都可以完成。不過貌似 service 還不行,這個我還沒有研究。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved