日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

让Qt应用程序跑在Android上

發(fā)布時(shí)間:2024/9/5 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让Qt应用程序跑在Android上 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??Qt最大的優(yōu)勢(shì)就是跨平臺(tái),一次性開發(fā)的Qt應(yīng)用程序,可以跑Windows、跑linux、跑MAC……如今移動(dòng)平臺(tái)android操作系統(tǒng)如此火爆,Qt當(dāng)然不能放過對(duì)android的支持,對(duì)了,還有iphone/ipad。而且,c++開發(fā)者們,想做android開發(fā)也不是問題了! 但是目前國(guó)內(nèi)研究qt for android 的人真是太少了,今天我使用的是國(guó)外開發(fā)者社區(qū)分享的資源 :Necessitas

開發(fā)環(huán)境

? ? ? Ubuntu 10.04 ?(sorry,qt for android暫不支持windows下開發(fā))

? ? ? sun-java6 ? (sorry,qt for android 1.5 會(huì)報(bào)錯(cuò)的,只能1.6)?

? ? ??necessitas 資源下載地址:點(diǎn)擊跳轉(zhuǎn)到資源下載地址

? ? ??apache-ant-1.8.0以上版本 :這里提供1.8.2版本資源下載


操作步驟

? ? ? 安裝好necessitas qt creator后,創(chuàng)建工程時(shí),會(huì)發(fā)現(xiàn)多了一個(gè)Android選項(xiàng),自然選擇創(chuàng)建Android工程。然后會(huì)驚喜的發(fā)現(xiàn),工程目錄下多了android文件夾。這也是為什么qt應(yīng)用程序可以成功的跑在android上的精髓所在,下篇文章再具體分析如何實(shí)現(xiàn)的Android的支持……

?


? ? ?在Tools-->Options里配置一下android環(huán)境變量:

? ???注意:別忘記add上 名為qtonandroid的AVD(模擬器)


? ??

? ?然后就可以開始開發(fā)Qt應(yīng)用程序,為了演示,我只是隨便寫了一點(diǎn)。然后直接點(diǎn)擊運(yùn)行(CTRL+R)。

? ?倘若出現(xiàn)這個(gè)錯(cuò)誤:

? ? Starting remote process ...
? ? Can't find eu.licentia.necessitas.industrius.example.Yiyaaixuexi process

? ?解決方案是:

? ?在run選項(xiàng)設(shè)置Android target SDK 為 android-8?


? ? 倘若出現(xiàn)錯(cuò)誤信息為:

Starting remote process ...
I/Qt JAVA ( ?469): surfaceChanged: 480,762
D/dalvikvm( ?469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8
D/dalvikvm( ?469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8
D/dalvikvm( ?469): No JNI_OnLoad found in /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8, skipping init
D/dalvikvm( ?469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8
D/dalvikvm( ?469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8
D/dalvikvm( ?469): No JNI_OnLoad found in /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8, skipping init
D/dalvikvm( ?469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/plugins/platforms/android/libandroid-8.so 0x44ede7e8
D/dalvikvm( ?469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/plugins/platforms/android/libandroid-8.so 0x44ede7e8
I/Qt ? ? ?( ?469): qt start
D/dalvikvm( ?469): Trying to load lib /data/data/eu.licentia.necessitas.industrius.example.Yiyaaixuexi/lib/libYiyaaixuexi.so 0x44ede7e8
D/dalvikvm( ?469): Added shared lib /data/data/eu.licentia.necessitas.industrius.example.Yiyaaixuexi/lib/libYiyaaixuexi.so 0x44ede7e8
I/Qt ? ? ?( ?469): qt start
W/ApplicationContext( ?469): Unable to create files directory
D/AndroidRuntime( ?469): Shutting down VM
W/dalvikvm( ?469): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime( ?469): FATAL EXCEPTION: main
E/AndroidRuntime( ?469): java.lang.NullPointerException
E/AndroidRuntime( ?469):? at eu.licentia.necessitas.industrius.QtActivity.startApplication(QtActivity.java:126)
E/AndroidRuntime( ?469):? at eu.licentia.necessitas.industrius.QtActivity.access$000(QtActivity.java:62)
E/AndroidRuntime( ?469):? at eu.licentia.necessitas.industrius.QtActivity$1$1.run(QtActivity.java:149)
E/AndroidRuntime( ?469):? at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( ?469):? at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( ?469):? at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( ?469):? at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( ?469):? at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( ?469):? at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( ?469):? at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( ?469):? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( ?469):? at dalvik.system.NativeStart.main(Native Method)
I/Process ( ?469): Sending signal. PID: 469 SIG: 9

解決方案:

這種錯(cuò)誤并不是環(huán)境配置的原因,而是Qt應(yīng)用程序本身的設(shè)計(jì)不符合現(xiàn)有平臺(tái)工具對(duì)android的支持。
比如:label上有中文字符等…… 改用英文字符就可以pass的。

如果你研究出了對(duì)中文字符支持的方案,歡迎交流下~~


順利的話,編譯通過后會(huì)自動(dòng)彈出android模擬器,但是初次運(yùn)行程序會(huì)遇到這個(gè)問題:



別擔(dān)心,你可以自己去google market下載MinistroConfigurationTool-1.0.apk 和?Ministro-2.0.apk ,

也可以直接下載我上傳到csdn的資源:apk-1???apk-2?

adb install 推進(jìn)安裝這兩個(gè)apk后,再次運(yùn)行程序,會(huì)提示:





安裝完成后,再瘋狂的啟動(dòng)log之后,就會(huì)在模擬器上看到讓我們欣喜的qt應(yīng)用程序了~~哦不,現(xiàn)在是android應(yīng)用程序了!

順便提一句:qt應(yīng)用程序其實(shí)被打包成了Yiyaaixuexi-debug.apk ?,在工程目錄下的android/bin/下。

下圖是效果圖:




轉(zhuǎn)自:

http://blog.csdn.net/yiyaaixuexi/article/details/6885408

總結(jié)

以上是生活随笔為你收集整理的让Qt应用程序跑在Android上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。