NO IMAGE

    英文原文地址:http://www.kdab.com/qt-android-episode-3/,作者 BogDan Vatra,中文譯者 foruok 。轉載請註明出處 http://blog.csdn.net/foruok 。順便說一句,我已經和 BogDan Vatra 電郵溝通,獲得了他對 Qt on Android 系列文章的中文譯文的授權。

    前一篇:Qt on Android Episode 2(翻譯);後一篇:Qt on Android Episode 4(翻譯)

    學習了如何搭建安卓開發環境之後,在這篇文章裡我們繼續前進,學習如何使用 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 和市場會顯示它
    • 每次新的釋放都要改變它們

想進一步瞭解應用版本,看這裡:http://developer.android.com/tools/publishing/versioning.html 。

  • Minimum and target SDK 。 Qt Creator 使用最低和目標 SDK 來設定節點屬性。
    • 最低要求 SDK —— 編輯 android:minSdkVersion 屬性,是一個整數 API 版本號,安卓市場用它來篩選可以安裝這個應用的裝置。 Android OS 也使用它來阻止應用被裝到低版本上。
    • 目標 SDK —— 編輯 android:targetSdkVersion 屬性。

安卓文件說:“這個屬性通知系統你已經針對目標版本做過測試,系統不應該使用任何相容行為來保持你的應用對目標版本的前向相容性。應用仍然能夠在較低版本上執行(直到 minSdkVersion )。

這個屬性對只使用 Qt 開發的安卓應用沒什麼影響。

想了解更多關於應用 SDK 版本的資訊,看這裡:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html 。

  • Application name , Qt Creator 只能幫助你設定應用英文版本的名稱。
  • Run ,這裡你應該選擇你想啟動的應用,大多數專案只有一個應用,所以,這裡沒必要選擇任何東西。
  • Permissions ,許可權對一個安卓程式非常重要。如果你不正確設定它們,你的應用將不能訪問系統資源(比如網路、外部儲存等)。從 Qt 5.2 SDK 開始, qmake 使用ANDROID_PERMISSIONS 變數來給每一個 Qt 模組設定最小許可權集(這些會被androiddeployqt 工具自動設定),但是在有些情況下你需要手動新增或移除它們。 Qt Creator 提供了一個不錯的許可權編輯器幫你幹這件事兒。

你的應用不應該宣告超出它實際需要的過多的許可權,那會嚇跑使用者。

請檢視安卓的 manifest 許可權頁面以瞭解關於這個主題的更多資訊:http://developer.android.com/reference/android/Manifest.permission.html 。

    在我的 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 2(翻譯);後一篇:Qt on Android Episode 4(翻譯)

    回顧: