Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Qt for Android 編譯安卓原生可執行程序

Qt for Android 編譯安卓原生可執行程序

編輯:關於Android編程

作為 C/C++ 程序員,有時候我們希望在安卓上運行從 C/C++ 生成的可執行程序,而不是在 Java 中通過 jni 的方式來調用 C 動態庫。有兩個途徑可以達到這個目的:一個是使用安卓 NDK 提供的工具鏈直接編譯 C 代碼(其中又有兩種方式,使用 android 的 mk 文件,使用自己編寫的 Makefile );一個是使用 Qt 5.2 for Android ,Qt Creator 可以生成安卓版本。這裡我們說 Qt for Android,不說 NDK 方式。

Qt for Android 的環境搭建,可以參考我之前的博文《Windows下Qt 5.2 for Android開發入門》。

一旦你生成了一個項目,配置好了工具鏈,就可以在 Qt Creator 的項目標簽中選擇安卓版本進行編譯。不過默認編譯出來的是動態庫, so 文件。而我們想要可執行程序。這個可以通過修改 Makefile 來完成,純手動的方式有以下幾個步驟:

修改 Makefile ,找到 LFLAGS 開始的那一行,去掉 -shared 和 -Wl,-soname,xxx.so 這兩個鏈接選項,這楊鏈接器就會生成可執行程序修改 Makefile ,找到 QMAKE_TARGET 和 TARGET 開始的兩行,把 " = " 後面的目標修改為你想要的那個名字,假定為 xxx 打開 Qt 5.2.0 for Desktop (MinGW 4.8 32 bit) ,進入你的安卓編譯目錄,執行 mingw32-make ,可以看見, xxx 生成了

使用原生程序比使用 APK + JNI 方式會有一個好處: Java 虛擬機無法控制原生程序占用的內存,而 APK + JNI 的方式, C 代碼和 Java 代碼共享整個 Java 虛擬機的內存, C 代碼會受到虛擬機內存大小的限制。

如果嫌上面的步驟麻煩(每次 Qt 工程變化都要手動修改 Makefile ,比如往添加了文件等),可以在 Qt Creator 中給工程添加一個構建步驟(自動修改 Makefile ),順序放在 qmake 之後,這樣每次 qmake 生成了 Makefile ,自定義的構建步驟就會自動執行來修改 Makefile ,在 make 時應用修改,最終生成可執行文件。下圖是我的一個工程的配置:


至於怎麼自動修改 Makefile ,可以使用一些開源的文本工具(如 sed for windows 等),這裡就展開了。我是自己寫了個小程序,專用的,不通用,也不提了。

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