Qt on Android:圖文詳解Hello World全過程

這是系列文章中的一篇,閱讀本文前請先閱讀《Windows下Qt 5.2 for Android開發入門》,以便確保開發環境和作者一致。

部分文章被轉發/轉載卻沒有註明出處,特此聲明:版權所有 foruok ,如需轉載敬請註明出處(http://blog.csdn.net/foruok)。

我將從實踐出發,帶領大傢一步一步完成在 Android 上的第一個 Qt 應用: Hello Qt on Android 。應用本身非常簡單(僅僅是在屏幕上顯示一個字符串 “Hello Qt on Android” ),這也是每種編程語言的入門教程中 Hello World 程序的共性。

下面我將和大傢一起來探索使用 Qt Creator 3.0 創建、管理、編譯、部署 Qt on Android 應用的整個過程。每一個步驟都配以我精心挑選並編排整理的截圖,力求初學者可以按圖索驥、順暢地走下去,完成自己在 Android 平臺上的第一次觀光旅行。

創建工程

打開 Qt Creator ,點擊文 “件(F)” 菜單,在彈出的菜單列表中選擇 “新建文件或項目(N)” 。如下圖所示:

如上操作後, Qt Creator 會彈出新建工程界面,讓我們選擇工程模板。如下面的所示:
vcD48cD48aW1nIHNyYz0=”https://www.aiwalls.com/uploadfile/Collfiles/20140414/20140414085844192.jpg” alt=”\” />

這裡我們選擇 “應用程序” 項目, “Qt Widgets Application” 模板。可以看到最右側的實時提示,支持的平臺中有 Android(藍線所示),看到這點,說明前面的開發環境搭建是正確的。
點擊 “選擇(C)…” 按鈕,新建工程向導會指引我們進入下一環節 “項目介紹和位置” 。參考下圖:

我已經做瞭標識,編號為 1 的文本框,你可以填寫項目的名字,這裡是 “HelloQtAndroid” ;編號為 2 的 “瀏覽…” 按鈕允許你選擇工程的存儲路徑,我準備把工程放在 “D:\projects\blogs\qt” 目錄下面。請對照下圖檢查你的配置:

點擊 “下一步” 按鈕,跟隨向導進入構建套件選擇(“Kit Selection”)環節。
我選擇瞭兩個套件,”Android for armeabi (GCC 4.7, Qt 5.2.0)” 和 “Desktop Qt 5.2.0 MinGW 32bit”,分別對應下圖中的標號為 1 和 2 的區域。請對照下圖檢查你的配置。

點擊 “下一步” 按鈕,跟隨向導進入 “類信息” 配置環節。下圖是默認的界面:

上圖中標號為 1 的下拉框,可以選擇待創建的 Widget 的基類,默認是 QMainWindow ,我這裡選擇 QWidget。標號為 2 的復選框,如果選中則會生成一個 .ui 文件,可以通過 Qt SDK 中的界面設計師來編輯界面,為瞭簡單直接,我們去掉瞭選中,不使用 .ui 文件,全部使用代碼完成界面構建。
請參考下圖檢查你的配置:

點擊 “下一步” 按鈕,跟隨向導進入 “項目管理” 環節。在這裡你可以選擇是否將工程加入版本控制系統(如 svn 之類),還可以看到即將添加到我們的 “Hello Qt on Android” 工程中的文件。如下圖所示:

終於看到 “完成(F)” 按鈕瞭,趕緊點擊它!看下圖,我們將進入日後使用 Qt Creator 這個近乎完美的 IDE 編程時使用頻度最高、相依相伴時間最久的界面。

如上圖所示,這就是我們日後天天要面對、不斷打交道的界面。我會選擇幾個最常用的功能簡明扼要的介紹它的用法。
左邊欄,標號為 1 的標簽,是 “編輯” 標簽,選中它,會進入編輯模式,就是上面的樣子。
標號為 2 的標簽,是 “項目” 標簽,選中它,會打開項目選項配置界面。該界面功能豐富到有些繁雜,後面我們會多花些時間來一一介紹我們的 “Hello Qt on Android” 工程必須要用的選項。
標號為 3 的是 “構建版本” 按鈕, 點擊它,會彈出一個快捷界面,允許我們快速選擇不同構建版本(如 Android 的 Release 構建, Desktop 的 Debug 構建等等)。點擊 “項目” 標簽所進入的配置界面中也可以完成構建版本選擇。
標號為 4 的是 “運行” 按鈕,點擊它, Qt Creator 會執行編譯、鏈接、打包等等工作,直到目標程序運行起來或者出錯停止。
“運行” 按鈕下面依次是 “開始調試” 、 “構建項目” 按鈕,鼠標懸停在它們上面就可以看到提示,其用途不言自明。
標號為 5 的那一橫排標簽,是 Qt Creator 的輸出窗口,點擊任一標簽,都會向上伸展出一個窗口顯示與標簽名字對應的信息。
問題標簽對應的窗口顯示構建問題,找到問題後雙擊就會跳轉到對應的代碼行或編譯輸出窗口(部分鏈接錯誤)。
編譯輸出標簽對應的窗口會把編譯、鏈接、打包、部署過程中的信息都顯示出來,這是我們從外面觀察 Qt Creator 工作過程的極佳途徑,善加使用必將獲益良多。
應用程序輸出標簽對應的窗口會顯示應用程序使用標準輸出打印的信息,APK 運行後, logcat 的日志也會顯示在這裡。
其它標簽不再細說,開發過程中使用幾次就熟悉瞭。
標號為 6 的區域,就是代碼編輯區。
標號為 7 的區域,是側邊欄、項目管理區域,這裡允許開發者以項目、類視圖、大綱、文件系統、類型層次、打開文檔等等方式來管理項目。

項目選項

介紹完瞭我們的好夥伴——項目管理與代碼編輯界面,接下來我們繼續完成 “Hello Qt on Android” 的項目配置。點擊前面介紹的標號為 2 的項目標簽,會看到下面的項目選項配置界面:

我們的新建工程,默認選中瞭 “Desktop Qt 5.2.0 MinGW 32bit” 這個套件。請註意上圖左下藍線標出的按鈕,前面提到,它是構建版本選擇按鈕,現在顯示的是電腦圖標配Debug字樣。

點擊標號為 1 的區域中的構建按鈕(藍色圓圈所在),切換到 “Android for armeabi” 套件,進行構建相關的配置。如下圖:

構建配置選項繁多,對於我們的第一個應用,隻要關註途中標識出的 1 和 2 兩個功能怎麼使用即可。
標號為 1 的按鈕,點擊可以切換到”運行”選項配置,馬上就能看到。
標號為 2 的組合框,可以選擇構建版本(一般是 Debug / Release 兩個)。它完成和左邊欄下藍色圓圈標識的構建版本按鈕一樣的功能。我們這裡選擇 “Release” 構建。
註意藍色圓圈標識區域,隨著我們選中 “Android for armeabi” 套件和 “Release” 構建,它從電腦圖標變成瞭安卓小機器人配 “Release” 字樣的按鈕。
好啦,現在讓我們點擊標號為 1 的”運行”按鈕,進行運行選項配置。對目前這個項目來說,運行配置遠比構建配置復雜,請擦亮眼睛,用心體會。

切換到運行配置,界面如上圖所示。先來看部署配置,點擊圖中標號為 1 的 “詳情” 按鈕,打開部署配置詳情界面:

seogU0RLILDmsb6jrNXiwO/ErMjPyscgYW5kcm9pZC0xN6GjztK1w8u1o6ggz8jH67TzyfEgQm9nRGFuIFZhdHJhILz7wcIgo6kgUXQgQ3JlYXRvciC1xNXi1tbP1Mq+sru5u83qw8CjrMjnufvK87Hq0PzNo9Taz8LArb/yyc/KsdD8uKG0sMzhyr7Su8/Cu+G4/LrDoaM8YnIgLz4gICAgztLV4sDvvPLSqsu1w/fSu8/CIFF0IENyZWF0b3Ig1tC1xNXiuPbF5NbD0aHP7qGjyrW8ysnPy/y21NOmIEFuZHJvaWQgQVBLILXE1vfF5NbDzsS8/iBBbmRyb2lkTWFuaWZlc3QueG1sINbQtcQgIGFuZHJvaWQ6dGFyZ2V0U2RrVmVyc2lvbiDF5NbDz+6ho9XiuPbF5NbDz+7UytDtxOPWuLaoxOO1xNOm08PV67bUtcRBbmRyb2lkIEFQSSBMZXZlbCCjrLb4tfW57rXEysejrMv8yrnTwyBzZGtWZXJzaW9uIMC01/fOqrHqx6mjrMjd0tfS/cbwu+zP/aGjyrW8ysnPo6zP1tTaztLDx7/J0tS88rWltdiw0SBzZGtWZXJzaW9uILrNIEFQSSBMZXZlbCDA7b3izqrNrNK7uPa2q873o6zPuM6isu6x8NLUuvPU2cu1oaM8YnIgLz4gICAgzqrBy8jDtPO80rbUIEFuZHJvaWQgQVBJIExldmVsINPQuPa4xcTuo6zO0r3YyKHByyBHb29nbGUgQW5kcm9pZCDU2s/fytay4aOox+u3w87K0rPD5g==” http://developer.android.com/guide/topics/manifest/uses-sdk-element.html” )中的一幅圖放在下面:

標號為 2 的”對包簽名”復選框,選中時 Qt Creator 會自動對 APK 進行簽名。而一旦你選中瞭它,就需要提供一個密鑰文件( keystore )供 Qt Creator 使用。 如果沒有,則點擊標號為 3 的 “Create” 按鈕, Qt Creator 會幫你創建一個;如果有,可以點擊 “Browse” 選擇。
標號為 4 的單選框,是 Qt 庫佈署策略中的一個,用 Ministro 服務安裝 Qt 。我們推薦使用這個,具體原因會在” Qt 庫的部署策略”一節詳細介紹。另外一個可用的策略是把 Qt 庫打包到你的 APK 中。
標號為 5 的復選框,選中時 Qt Creator 會在打包完成後打開包所在的目錄,方便開發者訪問生成的 APK 。
標號為 6 的浮現選,對應日志輸出選項。
標號為 7 的按鈕, “Create AndroidManifest.xml” ,如按鈕名所示,幫助你創建並配置 APK 的主配置文件 AndroidManifest.xml 。如果你不點這個按鈕呢, Qt Creator 會使用默認的選項幫你創建一個默認的配置文件。建議創建並配置它,否則你的 APK 包名什麼的都會讓你覺得怪怪的有點不舒服。
標號為 8 的按鈕,”Install Ministro from APK”,則是 Qt Creator 提供給我們的一個貼心服務,允許我們把下載到本地的 Ministro APK 安裝到 Android 設備上。順便說下,我在完成 “Hello Qt on Android” 項目時就遇到瞭無法安裝 Ministro 服務的問題,我的 XT882 電信定制版手機,根本訪問不到 Google Play。
標號為 9 的區域有兩個按鈕,允許我們添加依賴庫。現在的工程用不到,以後再說。
啊,天,終於說完瞭,你睡著瞭嘛,醒醒,我們繼續往下看。

創建密鑰文件和證書

讓我們回到簽名選項(別忘瞭,標號 2 ),選中它,然後點擊標號為 3 的 “Create” 按鈕,創建密鑰文件和證書。你會看到下面的界面(空空如也,沒錯,是初始界面嘛):

如上圖所示,有很多選項,照著填寫就行,錯瞭會有提示。我配置好後截瞭圖,在下面,請參照著檢查你的配置:

點擊”保存”按鈕,會彈出文件選擇對話框,讓你選擇密鑰文件的保存位置,你也可以修改它的名字。下面是我的配置截圖,供參考:

點擊——,哦,等下,先記住你剛才起的文件名和保存的位置(在市場中更新 APK 必須要使用和之前發佈版本相同的簽名),後面還要用到,然後再點擊”保存”按鈕,我們會回到運行配置界面。如下圖所示:

可以對照初始的運行配置截圖,我把修改過的選項用藍色橫線標註出來瞭。

創建 AndroidManifest.xml

接下來是我們的另一個重頭戲,創建 AndroidManifest.xml 文件。
好啦,下面是創建向導,允許你選擇保存位置,先別動它,使用默認值(工程目錄下的 android 子文件夾,回頭你可以到這個位置觀光一下,AndroidManifest.xml 還有你應用的圖標都放在這裡)就行。

直接點擊”完成(F)”按鈕,你會看到 Qt Creator 提供的供你編輯 AndroidManifest.xml 文件的圖形化界面(當然你也可以在 Qt Creator 中查看 XML 並手動修改它)。看圖:

這是個中等復雜度的界面,我做瞭 6 處標識,下面一一說明。
標號為 1 的編輯框,填寫你的包名。如你所見,默認值是 org.qtproject.example ,看起來不那麼正式。
標號為 2 的微調按鈕,允許你更改應用的版本號。
標號為 3 的區域,調整最低 API Level 和 目標 API Level。
標號為 4 的區域,讓你設定你的 APK 圖標,有高、中、低三個尺寸(一般對應 72×72 、 48×48 、 32×32)。
標號為 5 的下拉組合框,列出瞭所有支持的權限,你可以考慮你的 APK 需要什麼權限,選中它,點擊標號為 6 的 “Add” 按鈕就可以在 AndroidManifest.xml 中添加一個權限。當然你也可以點擊 “Remove” 按鈕來取笑一個不必要的權限。
關於 APK 的權限,這裡不細說,會在”AndroidManifest.xml 介紹”一節中詳細說明。對 HelloQtOnAndroid ,我保持 Qt Creator 設置的默認權限。
下面是我的配置截圖,改動的部分用藍線標註出來瞭,請參照檢查你的配置:

Qt Creator 提供的圖形化 Android Manifest 編輯界面,隻支持瞭主要幾個選項,如果你想細細調整體驗掌控全局的感覺,請點擊上圖藍色方框處的”XML Source”按鈕,手動編輯 xml 文件。如下圖所示:

和編輯 C++ 代碼一樣,可以在標號為 1 的編輯區來編輯 XML 文件。
謝天謝地,一百裡路我們走瞭九十裡啦,接下來就會驚嚇、驚喜不斷。

添加代碼

雖然你已經準備好迎接驚喜,我們還是得按捺一下心情,把代碼稍稍修改幾行。回到編輯界面,確保你左側項目管理窗口選中”項目”方式,展開源文件夾,雙擊其下的 widget.cpp ,在右側編輯區添加一行代碼:

new QLabel("Hello Qt on Android !", this);

另外還要包含 QLabel 這個頭文件。
好瞭,看圖:

運行程序

好啦好啦,九十九裡路啦,咫尺之遙,請點擊左邊欄的”運行”按鈕(你是否還記得), Qt Creator 會讓你選擇目標設備(如果環境配置正確,連接瞭手機或者創建瞭AVD),建議直接真機運行(你沒有 Android 手機嗎?),如下圖所示:

看見瞭嗎?選中我的老古董手機,摩托羅拉 XT882 ,Android 版本是 2.3.6 ,點擊”確定”按鈕,活動一下,靜待奇跡出現。
哦,嚇我一跳,我看見瞭這個界面:

忘瞭嗎,我們前面在運行配置中勾選瞭”Open package location after build”選項。如果你要在市場中發佈你的應用,請註意選擇(圖中藍框所示)簽過名的版本。
等一下,現在該看手機瞭。我看到瞭這個界面:

你是否還記得,我們選擇的 Qt 庫佈署策略——”使用Ministro 服務安裝 Qt 庫”?
現在要操作手機,摸下”確定”按鈕,會嘗試安裝 Ministro 服務。驚嚇來瞭,我看到手機屏幕上華麗麗地閃過一個 Toast 提示“安裝 Ministro 失敗”,然後就是下面的圖:

看樣子它是到我手機上默認的安智市場中去找 Ministro 瞭,沒找到。按返回鍵吧,哦,天,停在瞭黑屏界面,沒有任何反應……好吧,請猛擊手機的返回鍵或者小房子(主頁)鍵。哦,桌面出來瞭,謝謝。至於為什麼 Ministro 安裝失敗會出現黑屏,請閱讀後續章節。
現在我們需要回頭來調整運行配置,換一個 Qt 庫佈署策略——”在 APK 中捆綁 Qt 庫”。
再次運行,再次看到 “package location” 文件夾界面……,好吧,看手機,驚喜終於來瞭:

現在,終於可以停下來喘口氣瞭,我們的第一個 Qt on Android 的應用 “HelloQtOnAndroid”終於在真機上跑起來瞭。
如果你是第一次使用 Qt on Android,跟隨我的指南走下來,是什麼感覺?反正我第一次把 “Hello Qt On Android ” 跑通時,還是非常振奮的,激動瞭大半天。畢竟, Qt 作為在移動互聯網時代,是唯一可以與 Android 、 iOS 並提的跨平臺應用開發框架……;畢竟,作為 C/C++ 程序猿,我們可以為 Windows 桌面、 Linux 桌面 、 Android 手機/平板、iOS、MAC OS X 、 Tizen 、 Meego 、 Windows Mobile 、 Embedded Linux 、 Symbian等等平臺開發軟件而不需要切換開發框架和工具,是多麼令人舒心、自豪的事兒;畢竟……
   
好瞭,第一次 Qt on Android 應用的旅程到此為此。敬請期待後續文章。

特此聲明:版權所有 foruok ,如需轉載敬請註明出處(http://blog.csdn.net/foruok)。

我翻譯的大神 BogDan Vatra 的 Qt on Android 系列文章:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *