編輯:關於Android編程
今天為了測試使用 Qt Creator 3.0.0 開發的純 C 工程,利用了 Windows 下 Qt 5.2 for Android 開發入門裡創建的 HelloAndroid 工程,想把純 C 工程生成的 so 庫加到 HelloAndroid 工程中。結果加入進去了,但不會自動拷貝到生成目錄打包進 APK 。
研究了一個小時,大體搞明白了 Qt Creator 生成 APK 的流程。
首先 Qt Creator 會編譯時會生成一個 json 文件,就在工程目錄下,我的是 android-libhelloAndroid.so-deployment-settings.json 。內容如下:
{ "description": "This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.", "qt": "C:\\Qt\\Qt5.2.0\\5.2.0\\android_armv7", "sdk": "E:/android-sdk-windows", "ndk": "E:\\Android\\android-ndk-r8d", "toolchain-prefix": "arm-linux-androideabi", "tool-prefix": "arm-linux-androideabi", "toolchain-version": "4.7", "ndk-host": "windows", "target-architecture": "armeabi-v7a", "android-extra-libs": "libhttpclient_test.so", "application-binary": "E:/qt/helloAndroid/libhelloAndroid.so" }
上面文件裡的 application-binary ,實際上是一個 so 文件,在我這裡是 libhelloAndroid.so 。
要說明的是,編譯階段只會生成 so 文件,什麼事情不干。當你運行時,選擇了 Android 設備,Qt Creator 才開始執行一系列動作來生成 APK ,並 push 到設備上運行。大概步驟是這樣的:
創建構建目錄 拷貝 application-binary 拷貝 Qt 自己的庫和依賴的庫,如 libgnustl_shared.so 等。 根據模板拷貝 java 文件、生成 AndroidManifest.xml 、資源文件等等 調用 ant 編譯、打包、簽名、對齊 連接設備,install APK 並運行這些動作都是由一個名為 androiddeployqt.exe 的程序完成的,感興趣的可以看它的源碼,Qt SDK 裡有,同時也可以在 Qt Creator 的輸出 panel 中看到 這個部署程序的輸出信息。更詳細的過程可以參考 Qt 官方文檔 Deploying Applications to Android Devices,那裡面說得很詳細。
說說我遇到的問題。我在 pro 文件裡使用 LIBS += -lxxx 加入了我的 C 庫,編譯通過,可是 androiddeployqt 沒有拷貝 libxxx.so ,APK 運行時找不到依賴的 libxxx.so 直接掛掉了。這個問題的解決,只要添加一個額外的依賴庫就可以了,Qt Creator 會傳遞參數給 androiddeployqt ,後者就會正確打包。
在 Qt Creator 中,選則 Projects > Run > Deploy configurations > Details ,可以看到下面的界面:
看圖片上畫藍線、籃圈的地方,就是這裡,添加你依賴的庫即可。
好啦,到這裡我們可以在純粹 C++ 的 IDE 當中進行 Android 的開發了,帶界面的、不帶界面的,都可以完成。不過貌似 service 還不行,這個我還沒有研究。
思路分析:1、在onMeasure中測量整個View的寬和高後,設置寬高2、獲取我們res的圖片資源後,在ondraw方法中進行繪制圓形圖片3、通過Handler發送Ru
TabActivity在API13之後被fragment替代了,所以不建議使用效果:點擊頭像標簽,進行切換。 代碼:https://github.com/ldb
一、二維碼與條形碼工作原理目前的很多應用上都有掃碼功能,當時微信推出二維碼掃碼功能時,覺得imagine,通過一張簡單的圖片就能掃描添加還有,還有分享名片功能(也是一張二
簡述錄制視頻博客第一篇寫了視頻錄制控件的相關內容,這一篇裡講一下控件的具體使用。其實自己看一下控件的代碼,很容易使用的,可以根據自己的要求定制一下參數什麼的,這裡的代碼就