學習了如何搭建安卓開發環境之後,在這篇文章裡我們繼續前進,學習如何使用 Qt Creator 3.0 來建立、運行、調試、部署安卓上的 Qt 應用。本文只涵蓋 Qt Creator 的安卓相關部分。
準備你的安卓 Qt 項目
如果你想開始一個新項目或者只是想測試你剛搭建的開發環境是否正確,那麼當你建立一個項目的時候要確認選擇一個安卓套件。查看下面的圖片:
如果你已經有了一個項目,你想支援安卓,你只需要給已已有的項目添加一個安卓套件。查看下面的圖片:
為了編譯、部署、運行、調試安卓應用,首先你必須選擇一個安卓套件。查看下面的圖片:
讓我們試一下。
為了在安卓上測試應用,只需要點擊 Run/Debug 按鈕。
很快會出現一個對話方塊,列出所有已經串連的相容、不相容的裝置和可用的模擬器。選擇你想要的裝置,如果你想用同一個裝置多次運行這個應用,那麼你應該勾選 Use this device for architecture.. ,這意味著 Qt Creator 會自動使用這個裝置,不會再煩你了。下面這張圖片是我電腦上的:
如果沒列出來任何裝置,首先你應該檢查是否正確配置了開發環境。
等上一小會兒,你的應用應該在你的裝置上跑起來了。如果你選擇了 AVD ,它啟動會花點兒時間,耐心點兒。
如果你勾選了 Use this device for architecture.. ,Qt Creator 會記住這個選項直到你重設預設裝置或者關閉這個項目。為了重設預設裝置,你需要選擇Projects 視圖,點擊 Run 標籤,展開 Deploy configurations並點擊 Reset Default Devices 按鈕。
你不需要為了在裝置或模擬器上調試 Qt 應用做任何特別的事情,它生來就能用,只需確認你的裝置使用 Android API-10+ 。
Android Manifest
每一個安卓應用都需要一個 manifest 檔案。這是你應用程式的入口,安卓使用這個檔案來決定啟動哪個應用或活動,它包括應用程式的許可權、所需 API 版本以及許多其他內容。
androiddeployqt (一個工具,Qt Creator 用它來部署你的應用)使用一個 Android Manifest 模板並填充幾個預設值來運行你的應用。但為了發布你的應用,這是不夠的,因此我們需要建立一個 xml 檔案—— AndroidManifest.xml 。要做到這點,開啟Projects 視圖,點擊 Run 標籤,展開 Deploy configurations 並點擊 Create AndroidManifest.xml 按鈕。別忘了把這個檔案加到你的 SCM 中去。查看下面的圖片,看看你怎麼樣建立 AndroidManifest.xml 檔案:
現在,我們建立 AndroidManifest.xml 檔案之後,是時候來設定它了。在你建立了 AndroidManifest.xml 檔案後, Qt Creator 會自動開啟它。看這張圖片:
正如你所看到的 Qt Creator 為 AndroidManifest.xml 提供了一個不錯的、便於使用的編輯器。使用這個編輯器,你可以設定下列值:
Package name ,包名是: 逆轉的URL,例如 com.kdab.QtControlsExample作為一個唯一標識發布後不要改變它,否則應用就不能再升級了
Version code/name ,下一步是設定版本號碼和版本名稱,剛開始你什麼也不用改變,但是每一次你發布一個新的應用你都必須改變這些值,因此他們非常重要。 版本號碼——安卓和市場使用它來區分不同的版本版本名稱——使用者可見的版本字串, Android OS 和市場會顯示它每次新的釋放都要改變它們
Minimum and target SDK 。 Qt Creator 使用最低和目標 SDK 來設定節點屬性。 最低要求 SDK —— 編輯 android:minSdkVersion 屬性,是一個整數 API 版本號碼,安卓市場用它來篩選可以安裝這個應用的裝置。 Android OS 也使用它來阻止應用被裝到低版本上。目標 SDK —— 編輯 android:targetSdkVersion 屬性。
安卓文檔說:“這個屬性通知系統你已經針對目標版本做過測試,系統不應該使用任何相容行為來保持你的應用對目標版本的前向相容性。應用仍然能夠在較低版本上運行(直到 minSdkVersion )。
這個屬性對只使用 Qt 開發的安卓應用沒什麼影響。
Application name , Qt Creator 只能協助你設定應用英文版本的名稱。
Run ,這裡你應該選擇你想啟動的應用,大多數項目只有一個應用,所以,這裡沒必要選擇任何東西。
Permissions ,許可權對一個安卓程式非常重要。如果你不正確設定它們,你的應用將不能訪問系統資源(比如網路、外部儲存等)。從 Qt 5.2 SDK 開始, qmake 使用
ANDROID_PERMISSIONS 變數來給每一個 Qt 模組設定最小許可權集(這些會被
androiddeployqt 工具自動化佈建),但是在有些情況下你需要手動添加或移除它們。 Qt Creator 提供了一個不錯的許可權編輯器幫你幹這件事兒。
你的應用不應該聲明超出它實際需要的過多的許可權,那會嚇跑使用者。
在我的 QtQuick 樣本應用中, Qt Creator 的 Android manifest 編輯器看起來是下面的樣子。我的樣本應用不需要任何特別的許可權,所以我把他們全部刪除了。
Android manifest 相當複雜,有時候你需要手動編輯它。 Qt Creator 允許你切換到 XML 摘要碼。如所示:
Android manifest 是個畜生!為了掌握它請閱讀安卓的 manifest 頁面:http://developer.android.com/guide/topics/manifest/manifest-intro.html 。
Android Target SDK ,這個 SDK 是用來編譯你應用中的 Java 部分的。
別擔心選擇最高的 SDK ,你的應用仍然能夠運行在任意的使用 API-9+ 的安卓裝置上, Qt 的 java 只用到了 API-9 的代碼。
“你說什嗎?另外一個 SDK ? 到底我們需要設定多少個 SDK ?”好吧,總共涉及到了四個安卓 SDK ,在 manifest 檔案中有三個(最低、目標、最高),這裡一個。
附加庫,使用這個編輯器來給你的項目添加任意的第三方庫。 Qt Creator 編輯你的 .pro 檔案並設定 ANDROID_EXTRA_LIBS qmake 變數。當然開發人員不應該混用不相容的庫,比如 x86 庫不能用在針對 arm 的應用中。
因為 KDAB 指南說,我不應該建立超過一千字的文章(本文大大超過了),我得打住了。下次我們會看看 Qt on Android 有什麼樣的部署系統以及我們怎樣給包簽名,這兩步是發布前最重要的事兒。
回顧:
Qt on Android Episode 1(翻譯)Qt on Android Episode 2(翻譯)Windows下Qt 5.2 for Android開發入門