這是系列文章中的一篇,閱讀本文前請先閱讀《Windows下Qt 5.2 for Android開發入門》,以便確保開發環境和做者一致。html
部分文章被轉發/轉載卻沒有註明出處,特此聲明:版權全部 foruok ,如需轉載敬請註明出處(http://blog.csdn.net/foruok)。linux
我將從實踐出發,帶領你們一步一步完成在 Android 上的第一個 Qt 應用: Hello Qt on Android 。應用自己很是簡單(僅僅是在屏幕上顯示一個字符串 "Hello Qt on Android" ),這也是每種編程語言的入門教程中 Hello World 程序的共性。android
下面我將和你們一塊兒來探索使用 Qt Creator 3.0 建立、管理、編譯、部署 Qt on Android 應用的整個過程。每個步驟都配以我精心挑選並編排整理的截圖,力求初學者能夠按圖索驥、順暢地走下去,完成本身在 Android 平臺上的第一次觀光旅行。
編程
打開 Qt Creator ,點擊文 "件(F)" 菜單,在彈出的菜單列表中選擇 "新建文件或項目(N)" 。以下圖所示:
框架
如上操做後, Qt Creator 會彈出新建工程界面,讓咱們選擇工程模板。以下面的所示:
編程語言
這裏咱們選擇 "應用程序" 項目, "Qt Widgets Application" 模板。能夠看到最右側的實時提示,支持的平臺中有 Android(藍線所示),看到這點,說明前面的開發環境搭建是正確的。
點擊 "選擇(C)..." 按鈕,新建工程嚮導會指引咱們進入下一環節 "項目介紹和位置" 。參考下圖:
ide
我已經作了標識,編號爲 1 的文本框,你能夠填寫項目的名字,這裏是 "HelloQtAndroid" ;編號爲 2 的 "瀏覽..." 按鈕容許你選擇工程的存儲路徑,我準備把工程放在 "D:\projects\blogs\qt" 目錄下面。請對照下圖檢查你的配置:
svn
點擊 "下一步" 按鈕,跟隨嚮導進入構建套件選擇("Kit Selection")環節。
我選擇了兩個套件,"Android for armeabi (GCC 4.7, Qt 5.2.0)" 和 "Desktop Qt 5.2.0 MinGW 32bit",分別對應下圖中的標號爲 1 和 2 的區域。請對照下圖檢查你的配置。
工具
點擊 "下一步" 按鈕,跟隨嚮導進入 "類信息" 配置環節。下圖是默認的界面:
ui
上圖中標號爲 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 的 "詳情" 按鈕,打開部署配置詳情界面:
但願你沒被嚇到,我在上圖中做了 9 處標識,比以前的編輯界面( 7 個標識)還多。讓咱們化繁爲簡,一個一個來看。
標號爲 1 的下拉框,能夠選擇應用針對的目標 SDK 版本,這裏默認是 android-17。我得說( 先請大神 BogDan Vatra 見諒 ) Qt Creator 的這種顯示不夠完美,若是鼠標懸停在下拉框上時懸浮窗提示一下會更好。
我這裏簡要說明一下 Qt Creator 中的這個配置選項。實際上它對應 Android APK 的主配置文件 AndroidManifest.xml 中的 android:targetSdkVersion 配置項。這個配置項容許你指定你的應用針對的Android API Level ,而弔詭的是,它使用 sdkVersion 來做爲標籤,容易引發混淆。實際上,如今咱們能夠簡單地把 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 會幫你建立一個;若是有,能夠點擊 "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 必需要使用和以前發佈版本相同的簽名),後面還要用到,而後再點擊"保存"按鈕,咱們會回到運行配置界面。以下圖所示:
能夠對照初始的運行配置截圖,我把修改過的選項用藍色橫線標註出來了。
< 喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48aDE+tLS9qCBBbmRyb2lkTWFuaWZlc3QueG1sPC9oMT48cD4gICAgvdPPwsC0ysfO0sPHtcTB7dK7uPbW2M23z7ejrLS0vaggQW5kcm9pZE1hbmlmZXN0LnhtbCDOxLz+oaM8YnIgLz4gICC6w8Cyo6zPwsPmyse0tL2oz/K1vKOs1MrQ7cTj0aHU8bGjtObOu9bDo6zPyLHwtq/L/KOsyrnTw8SsyM/WtaOouaSzzMS/wrzPwrXEIGFuZHJvaWQg19POxLz+vNCjrLvYzbfE47/J0tS1vdXiuPbOu9bDudu54tK7z8KjrEFuZHJvaWRNYW5pZmVzdC54bWwgu7nT0MTj06bTw7XEzbyx6ra8t8XU2tXiwO+jqb7N0NChozxiciAvPjwvcD48cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140414/20140414085854216.jpg" alt="\" />
直接點擊"完成(F)"按鈕,你會看到 Qt Creator 提供的供你編輯 AndroidManifest.xml 文件的圖形化界面(固然你也能夠在 Qt Creator 中查看 XML 並手動修改它)。看圖:
這是個中等複雜度的界面,我作了 6 處標識,下面一一說明。
標號爲 1 的編輯框,填寫你的包名。如你所見,默認值是 org.qtproject.example ,看起來不那麼正式。
標號爲 2 的微調按鈕,容許你更改應用的版本號。
標號爲 3 的區域,調整最低 API Level 和 目標 API Level。
標號爲 4 的區域,讓你設定你的 APK 圖標,有高、中、低三個尺寸(通常對應 72x72 、 48x48 、 32x32)。
標號爲 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 ,在右側編輯區添加一行代碼:
1
|
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 系列文章:
Qt on Android Episode 1(翻譯)Qt on Android Episode 2(翻譯)Qt on Android Episode 3(翻譯)Qt on Android Episode 4(翻譯)
個人關於 Qt on Android 的系列文章:
Windows下Qt 5.2 for Android開發入門Qt for Android 部署流程分析Qt for Android 編譯純C工程Windows下Qt for Android 編譯安卓C語言可執行程序