轉(zhuǎn)載于:http://blog.csdn.net/foruok/article/details/23528293??
我將從實踐出發(fā),帶領大家一步一步完成在 Android 上的第一個 Qt 應用: Hello Qt on Android 。應用本身非常簡單(僅僅是在屏幕上顯示一個字符串 "Hello Qt on Android" ),這也是每種編程語言的入門教程中 Hello World 程序的共性。
? ? 下面我將和大家一起來探索使用 Qt Creator 3.0 創(chuàng)建、管理、編譯、部署 Qt on Android 應用的整個過程。每一個步驟都配以我精心挑選并編排整理的截圖,力求初學者可以按圖索驥、順暢地走下去,完成自己在 Android 平臺上的第一次觀光旅行。
? ? 打開 Qt Creator ,點擊文 "件(F)" 菜單,在彈出的菜單列表中選擇 "新建文件或項目(N)" 。如下圖所示:
? ? 如上操作后, Qt Creator 會彈出新建工程界面,讓我們選擇工程模板。如下面的所示:
? ? 這里我們選擇 "應用程序" 項目, "Qt Widgets Application" 模板。可以看到最右側(cè)的實時提示,支持的平臺中有 Android(藍線所示),看到這點,說明前面的開發(fā)環(huán)境搭建是正確的。
? ? 點擊 "選擇(C)..." 按鈕,新建工程向?qū)敢覀冞M入下一環(huán)節(jié) "項目介紹和位置" 。參考下圖:
? ? 我已經(jīng)做了標識,編號為 1 的文本框,你可以填寫項目的名字,這里是 "HelloQtAndroid" ;編號為 2 的 "瀏覽..." 按鈕允許你選擇工程的存儲路徑,我準備把工程放在 "D:projectsblogsqt" 目錄下面。請對照下圖檢查你的配置:
? ? 點擊 "下一步" 按鈕,跟隨向?qū)нM入構建套件選擇("Kit Selection")環(huán)節(jié)。
? ? 我選擇了兩個套件,"Android for armeabi (GCC 4.7, Qt 5.2.0)" 和 "Desktop Qt 5.2.0 MinGW 32bit",分別對應下圖中的標號為 1 和 2 的區(qū)域。請對照下圖檢查你的配置。
? ? 點擊 "下一步" 按鈕,跟隨向?qū)нM入 "類信息" 配置環(huán)節(jié)。下圖是默認的界面:
? ? 上圖中標號為 1 的下拉框,可以選擇待創(chuàng)建的 Widget 的基類,默認是 QMainWindow ,我這里選擇 QWidget。標號為 2 的復選框,如果選中則會生成一個 .ui 文件,可以通過 Qt SDK 中的界面設計師來編輯界面,為了簡單直接,我們?nèi)サ袅诉x中,不使用 .ui 文件,全部使用代碼完成界面構建。
? ? 請參考下圖檢查你的配置:
? ? 點擊 "下一步" 按鈕,跟隨向?qū)нM入 "項目管理" 環(huán)節(jié)。在這里你可以選擇是否將工程加入版本控制系統(tǒng)(如 svn 之類),還可以看到即將添加到我們的 "Hello Qt on Android" 工程中的文件。如下圖所示:
? ? 終于看到 "完成(F)" 按鈕了,趕緊點擊它!看下圖,我們將進入日后使用 Qt Creator 這個近乎完美的 IDE 編程時使用頻度最高、相依相伴時間最久的界面。
? ? 如上圖所示,這就是我們?nèi)蘸筇焯煲鎸?、不斷打交道的界面。我會選擇幾個最常用的功能簡明扼要的介紹它的用法。
? ? 左邊欄,標號為 1 的標簽,是 "編輯" 標簽,選中它,會進入編輯模式,就是上面的樣子。
? ? 標號為 2 的標簽,是 "項目" 標簽,選中它,會打開項目選項配置界面。該界面功能豐富到有些繁雜,后面我們會多花些時間來一一介紹我們的 "Hello Qt on Android" 工程必須要用的選項。
? ? 標號為 3 的是 "構建版本" 按鈕, 點擊它,會彈出一個快捷界面,允許我們快速選擇不同構建版本(如 Android 的 Release 構建, Desktop 的 Debug 構建等等)。點擊 "項目" 標簽所進入的配置界面中也可以完成構建版本選擇。
? ? 標號為 4 的是 "運行" 按鈕,點擊它, Qt Creator 會執(zhí)行編譯、鏈接、打包等等工作,直到目標程序運行起來或者出錯停止。
? ? "運行" 按鈕下面依次是 "開始調(diào)試" 、 "構建項目" 按鈕,鼠標懸停在它們上面就可以看到提示,其用途不言自明。
? ? 標號為 5 的那一橫排標簽,是 Qt Creator 的輸出窗口,點擊任一標簽,都會向上伸展出一個窗口顯示與標簽名字對應的信息。
? ? 問題標簽對應的窗口顯示構建問題,找到問題后雙擊就會跳轉(zhuǎn)到對應的代碼行或編譯輸出窗口(部分鏈接錯誤)。
? ? 編譯輸出標簽對應的窗口會把編譯、鏈接、打包、部署過程中的信息都顯示出來,這是我們從外面觀察 Qt Creator 工作過程的極佳途徑,善加使用必將獲益良多。
? ? 應用程序輸出標簽對應的窗口會顯示應用程序使用標準輸出打印的信息,APK 運行后, logcat 的日志也會顯示在這里。
? ? 其它標簽不再細說,開發(fā)過程中使用幾次就熟悉了。
? ? 標號為 6 的區(qū)域,就是代碼編輯區(qū)。
? ? 標號為 7 的區(qū)域,是側(cè)邊欄、項目管理區(qū)域,這里允許開發(fā)者以項目、類視圖、大綱、文件系統(tǒng)、類型層次、打開文檔等等方式來管理項目。
? ? 介紹完了我們的好伙伴——項目管理與代碼編輯界面,接下來我們繼續(xù)完成 "Hello Qt on Android" 的項目配置。點擊前面介紹的標號為 2 的項目標簽,會看到下面的項目選項配置界面:
? ? 我們的新建工程,默認選中了 "Desktop Qt 5.2.0 MinGW 32bit" 這個套件。請注意上圖左下藍線標出的按鈕,前面提到,它是構建版本選擇按鈕,現(xiàn)在顯示的是電腦圖標配Debug字樣。
? ? 點擊標號為 1 的區(qū)域中的構建按鈕(藍色圓圈所在),切換到 "Android for armeabi" 套件,進行構建相關的配置。如下圖:
? ? 構建配置選項繁多,對于我們的第一個應用,只要關注途中標識出的 1 和 2 兩個功能怎么使用即可。
? ? 標號為 1 的按鈕,點擊可以切換到"運行"選項配置,馬上就能看到。
? ? 標號為 2 的組合框,可以選擇構建版本(一般是 Debug / Release 兩個)。它完成和左邊欄下藍色圓圈標識的構建版本按鈕一樣的功能。我們這里選擇 "Release" 構建。
? ? 注意藍色圓圈標識區(qū)域,隨著我們選中 "Android for armeabi" 套件和 "Release" 構建,它從電腦圖標變成了安卓小機器人配 "Release" 字樣的按鈕。
好啦,現(xiàn)在讓我們點擊標號為 1 的"運行"按鈕,進行運行選項配置。對目前這個項目來說,運行配置遠比構建配置復雜,請擦亮眼睛,用心體會。
? ? 切換到運行配置,界面如上圖所示。先來看部署配置,點擊圖中標號為 1 的 "詳情" 按鈕,打開部署配置詳情界面:
? ? 希望你沒被嚇到,我在上圖中作了 9 處標識,比之前的編輯界面( 7 個標識)還多。讓我們化繁為簡,一個一個來看。
? ? 標號為 1 的下拉框,可以選擇應用針對的目標 SDK 版本,這里默認是 android-17。我得說( 先請大神 BogDan Vatra 見諒 ) Qt Creator 的這種顯示不夠完美,如果鼠標懸停在下拉框上時懸浮窗提示一下會更好。
? ? 我這里簡要說明一下 Qt Creator 中的這個配置選項。實際上它對應 Android APK 的主配置文件 AndroidManifest.xml 中的 ?android:targetSdkVersion 配置項。這個配置項允許你指定你的應用針對的Android API Level ,而吊詭的是,它使用 sdkVersion 來作為標簽,容易引起混淆。實際上,現(xiàn)在我們可以簡單地把 sdkVersion 和 API Level 理解為同一個東西,細微差別以后再說。
? ? 為了讓大家對 Android API Level 有個概念,我截取了 Google Android 在線手冊(請訪問頁面" http://developer.android.com/guide/topics/manifest/uses-sdk-element.html" )中的一幅圖放在下面:
? ? 標號為 2 的"對包簽名"復選框,選中時 Qt Creator 會自動對 APK 進行簽名。而一旦你選中了它,就需要提供一個密鑰文件( keystore )供 Qt Creator 使用。 如果沒有,則點擊標號為 3 的 "Create" 按鈕, Qt Creator 會幫你創(chuàng)建一個;如果有,可以點擊 "Browse" 選擇。
? ? 標號為 4 的單選框,是 Qt 庫布署策略中的一個,用 Ministro 服務安裝 Qt 。我們推薦使用這個,具體原因會在" Qt 庫的部署策略"一節(jié)詳細介紹。另外一個可用的策略是把 Qt 庫打包到你的 APK 中。
? ? 標號為 5 的復選框,選中時 Qt Creator 會在打包完成后打開包所在的目錄,方便開發(fā)者訪問生成的 APK 。
? ? 標號為 6 的浮現(xiàn)選,對應日志輸出選項。
? ? 標號為 7 的按鈕, "Create AndroidManifest.xml" ,如按鈕名所示,幫助你創(chuàng)建并配置 APK 的主配置文件 AndroidManifest.xml 。如果你不點這個按鈕呢, Qt Creator 會使用默認的選項幫你創(chuàng)建一個默認的配置文件。建議創(chuàng)建并配置它,否則你的 APK 包名什么的都會讓你覺得怪怪的有點不舒服。
? ? 標號為 8 的按鈕,"Install Ministro from APK",則是 Qt Creator 提供給我們的一個貼心服務,允許我們把下載到本地的 Ministro APK 安裝到 Android 設備上。順便說下,我在完成 "Hello Qt on Android" 項目時就遇到了無法安裝 Ministro 服務的問題,我的 XT882 電信定制版手機,根本訪問不到 Google Play。?
? ? 標號為 9 的區(qū)域有兩個按鈕,允許我們添加依賴庫?,F(xiàn)在的工程用不到,以后再說。
? ? 啊,天,終于說完了,你睡著了嘛,醒醒,我們繼續(xù)往下看。
? ? 讓我們回到簽名選項(別忘了,標號 2 ),選中它,然后點擊標號為 3 的 "Create" 按鈕,創(chuàng)建密鑰文件和證書。你會看到下面的界面(空空如也,沒錯,是初始界面嘛):
? ? 如上圖所示,有很多選項,照著填寫就行,錯了會有提示。我配置好后截了圖,在下面,請參照著檢查你的配置:
? ? 點擊"保存"按鈕,會彈出文件選擇對話框,讓你選擇密鑰文件的保存位置,你也可以修改它的名字。下面是我的配置截圖,供參考:
? ? 點擊——,哦,等下,先記住你剛才起的文件名和保存的位置(在市場中更新 APK 必須要使用和之前發(fā)布版本相同的簽名),后面還要用到,然后再點擊"保存"按鈕,我們會回到運行配置界面。如下圖所示:
? ? 可以對照初始的運行配置截圖,我把修改過的選項用藍色橫線標注出來了。
? ? 接下來是我們的另一個重頭戲,創(chuàng)建 AndroidManifest.xml 文件。
? ?好啦,下面是創(chuàng)建向?qū)?,允許你選擇保存位置,先別動它,使用默認值(工程目錄下的 android 子文件夾,回頭你可以到這個位置觀光一下,AndroidManifest.xml 還有你應用的圖標都放在這里)就行。
? ? 直接點擊"完成(F)"按鈕,你會看到 Qt Creator 提供的供你編輯 AndroidManifest.xml 文件的圖形化界面(當然你也可以在 Qt Creator 中查看 XML 并手動修改它)??磮D:
? ? 這是個中等復雜度的界面,我做了 6 處標識,下面一一說明。
? ? 標號為 1 的編輯框,填寫你的包名。如你所見,默認值是 org.qtproject.example ,看起來不那么正式。
? ? 標號為 2 的微調(diào)按鈕,允許你更改應用的版本號。
? ? 標號為 3 的區(qū)域,調(diào)整最低 API Level 和 目標 API Level。
? ? 標號為 4 的區(qū)域,讓你設定你的 APK 圖標,有高、中、低三個尺寸(一般對應 72x72 、 48x48 、 32x32)。
? ? 標號為 5 的下拉組合框,列出了所有支持的權限,你可以考慮你的 APK 需要什么權限,選中它,點擊標號為 6 的 "Add" 按鈕就可以在 AndroidManifest.xml 中添加一個權限。當然你也可以點擊 "Remove" 按鈕來取笑一個不必要的權限。
? ? 關于 APK 的權限,這里不細說,會在"AndroidManifest.xml 介紹"一節(jié)中詳細說明。對 HelloQtOnAndroid ,我保持 Qt Creator 設置的默認權限。
? ? 下面是我的配置截圖,改動的部分用藍線標注出來了,請參照檢查你的配置:
? ? Qt Creator 提供的圖形化 Android Manifest 編輯界面,只支持了主要幾個選項,如果你想細細調(diào)整體驗掌控全局的感覺,請點擊上圖藍色方框處的"XML Source"按鈕,手動編輯 xml 文件。如下圖所示:
? ? 和編輯 C++ 代碼一樣,可以在標號為 1 的編輯區(qū)來編輯 XML 文件。
? ? 謝天謝地,一百里路我們走了九十里啦,接下來就會驚嚇、驚喜不斷。
? ? 雖然你已經(jīng)準備好迎接驚喜,我們還是得按捺一下心情,把代碼稍稍修改幾行。回到編輯界面,確保你左側(cè)項目管理窗口選中"項目"方式,展開源文件夾,雙擊其下的 widget.cpp ,在右側(cè)編輯區(qū)添加一行代碼:
? ? 好了,看圖:
運行程序
? ? 好啦好啦,九十九里路啦,咫尺之遙,請點擊左邊欄的"運行"按鈕(你是否還記得), Qt Creator 會讓你選擇目標設備(如果環(huán)境配置正確,連接了手機或者創(chuàng)建了AVD),建議直接真機運行(你沒有 Android 手機嗎?),如下圖所示:
? ? 看見了嗎?選中我的老古董手機,摩托羅拉 XT882 ,Android 版本是 2.3.6 ,點擊"確定"按鈕,活動一下,靜待奇跡出現(xiàn)。
? ? 哦,嚇我一跳,我看見了這個界面:
? ? 忘了嗎,我們前面在運行配置中勾選了"Open package location after build"選項。如果你要在市場中發(fā)布你的應用,請注意選擇(圖中藍框所示)簽過名的版本。
? ? 等一下,現(xiàn)在該看手機了。我看到了這個界面:
? ? 你是否還記得,我們選擇的 Qt 庫布署策略——"使用Ministro 服務安裝 Qt 庫"?
? ? 現(xiàn)在要操作手機,摸下"確定"按鈕,會嘗試安裝 Ministro 服務。驚嚇來了,我看到手機屏幕上華麗麗地閃過一個 Toast 提示“安裝 Ministro 失敗”,然后就是下面的圖:
? ? 看樣子它是到我手機上默認的安智市場中去找 Ministro 了,沒找到。按返回鍵吧,哦,天,停在了黑屏界面,沒有任何反應……好吧,請猛擊手機的返回鍵或者小房子(主頁)鍵。哦,桌面出來了,謝謝。至于為什么 Ministro 安裝失敗會出現(xiàn)黑屏,請閱讀后續(xù)章節(jié)。
? ? 現(xiàn)在我們需要回頭來調(diào)整運行配置,換一個 Qt 庫布署策略——"在 APK 中捆綁 Qt 庫"。
? ? 再次運行,再次看到 "package location" 文件夾界面……,好吧,看手機,驚喜終于來了:
? ? 現(xiàn)在,終于可以停下來喘口氣了,我們的第一個 Qt on Android 的應用 "HelloQtOnAndroid"終于在真機上跑起來了。
? ? 如果你是第一次使用 Qt on Android,跟隨我的指南走下來,是什么感覺?反正我第一次把 "Hello Qt On Android " 跑通時,還是非常振奮的,激動了大半天。畢竟, Qt 作為在移動互聯(lián)網(wǎng)時代,是唯一可以與 Android 、 iOS 并提的跨平臺應用開發(fā)框架……;畢竟,作為 C/C++ 程序猿,我們可以為 Windows 桌面、 Linux 桌面 、 Android 手機/平板、iOS、MAC OS X 、 Tizen 、 Meego 、 Windows Mobile 、 Embedded Linux 、 Symbian等等平臺開發(fā)軟件而不需要切換開發(fā)框架和工具,是多么令人舒心、自豪的事兒;畢竟……
? ? 好了,第一次 Qt on Android 應用的旅程到此為此。敬請期待后續(xù)文章。