让Qt应用程序跑在Android上
Qt最大的优势就是跨平台,一次性开发的Qt应用程序,可以跑Windows、跑linux、跑MAC……如今移动平台android操作系统如此火爆,Qt当然不能放过对android的支持,对了,还有iphone/ipad。而且,c++开发者们,想做android开发也不是问题了! 但是目前国内研究qt for android 的人真是太少了,今天我使用的是国外开发者社区分享的资源 :Necessitas
开发环境
Ubuntu 10.04 (sorry,qt for android暂不支持windows下开发)
sun-java6 (sorry,qt for android 1.5 会报错的,只能1.6)
necessitas 资源下载地址:点击跳转到资源下载地址
apache-ant-1.8.0以上版本 :这里提供1.8.2版本资源下载
操作步骤
安装好necessitas qt creator后,创建工程时,会发现多了一个Android选项,自然选择创建Android工程。然后会惊喜的发现,工程目录下多了android文件夹。这也是为什么qt应用程序可以成功的跑在android上的精髓所在,下篇文章再具体分析如何实现的Android的支持……
在Tools-->Options里配置一下android环境变量:
注意:别忘记add上 名为qtonandroid的AVD(模拟器)
然后就可以开始开发Qt应用程序,为了演示,我只是随便写了一点。然后直接点击运行(CTRL+R)。
倘若出现这个错误:
Starting remote process ...
Can't find eu.licentia.necessitas.industrius.example.Yiyaaixuexi process
解决方案是:
在run选项设置Android target SDK 为 android-8
倘若出现错误信息为:
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
解决方案:
这种错误并不是环境配置的原因,而是Qt应用程序本身的设计不符合现有平台工具对android的支持。
比如:label上有中文字符等…… 改用英文字符就可以pass的。
如果你研究出了对中文字符支持的方案,欢迎交流下~~
顺利的话,编译通过后会自动弹出android模拟器,但是初次运行程序会遇到这个问题:
别担心,你可以自己去google market下载MinistroConfigurationTool-1.0.apk 和 Ministro-2.0.apk ,
也可以直接下载我上传到csdn的资源:apk-1 apk-2
adb install 推进安装这两个apk后,再次运行程序,会提示:
安装完成后,再疯狂的启动log之后,就会在模拟器上看到让我们欣喜的qt应用程序了~~哦不,现在是android应用程序了!
顺便提一句:qt应用程序其实被打包成了Yiyaaixuexi-debug.apk ,在工程目录下的android/bin/下。
下图是效果图:
转自:
http://blog.csdn.net/yiyaaixuexi/article/details/6885408
让Qt应用程序跑在Android上相关推荐
- Go编译android,go语言的程序跑在android上
之前写了一个检查页面的golang程序http://www.simonzhang.net/?p=1346.就用这个测试一下放到android上看看效果如何.但是我在windows上的golang还是产 ...
- QT应用程序开发到Android
Qt最大的优势就是跨平台,一次性开发的Qt应用程序,可以跑Windows.跑Linux.跑MAC--如今移动平台Android操作系统如此火爆,Qt当然不能放过对android的支持,对了,还有iph ...
- linux .net程序,.Net程序跑在Linux上
.Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了. Linux Disibutaion:Open Logic 7.2 1.Install .N ...
- Linux程序移植到Android上
序言: 由于本人还是比较偏重于先说明原理在说明实际操作步骤,要知其然更要知其所以然,如下图所示: 传统的linux系统中的程序基本都依赖于glibc(至于什么是glibc可以百度去),而右边AOSP( ...
- android用什么更新应用程序,如何在Android上更新应用程序 教你如何更新安卓手机APP...
您从Play商店下载的大多数Android应用程序都会出于各种原因而定期提供更新:添加功能,错误修复,提高安全性...了解如何在Android智能手机上管理应用程序以及如何使它们保持最新. 如果您想要 ...
- android指南针程序,如何在Android上制作精确的指南针
我的Android应用程序显示了世界上某个地方的方向,因此需要获得罗盘度. 这是我一直用来计算学位的代码: public void getDirection() { mySensorManager = ...
- Qt应用程序开发九:上传文件
上传参数如下: 核心代码: void HttpReq::upload(QString jsonfile) {if(!QFile::exists(jsonfile))return;QHttpMultiP ...
- Qt平台和编译器说明-Android
Qt平台和编译器说明-Android 平台和编译器说明-Android Qt Creator中的Android开发 应用程序包 部署方式 使用Ministro进行部署 部署进行调试 插件和导入的特殊注 ...
- 推测用户行为 程序员分享Android开发经验
从G1上市到现在,市面上已经出现了至少30款Android手机.为什么至今依然有一些用户在抱怨Android不好用,在相关的开发中,什么才是真正值得关注的,开发的核心是什么?为什么移动应用需要格外关注 ...
最新文章
- c++ clr编译dll在c#调用时出现“试图加载不正确的格式”“找不到dll”错误的解决...
- Java String 到底是引用传递还是值传递?
- 字符设备驱动程序之poll机制
- 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )
- Linux调试——gdb调试器的简单使用调试coredump文件
- mybatis清除一级缓存的几种方法
- CSS设置列表的符号
- 用css3制作旋转加载动画的几种方法
- vc mysql free result_VC的MySQL编程
- 记录几条简单的正则表达式
- Automatic Judge
- Android AIDL
- 5.1 Zend_Log_Writer
- 定位CPU高问题三把斧
- 小知识--DOS命令2
- 【爬虫】Python爬虫实战,Python实现中国地铁数据可视化arcmap
- mysql复合索引加锁_Mysql加锁过程详解
- ParrotSec 中文社区 QQ群认证 Openssl解密
- 实时数据库和关系数据库的区别
- 2018年第16周-ZooKeeper基本概念(配搭建过程和Master-Workers例子)
热门文章
- 微课视频小学用计算机画画,初识电脑绘画
- java wav 时间,Java-调整WAV文件的播放速度
- unity3d 绘制小地图_老师!我想用Tilemap做元气骑士款地图!
- java 包权限_Java基础(十二)之包和权限访问
- Windows环境下MySQL 5.7的安装、配置与卸载
- golang中文文档_Golang开发环境搭建
- 张迈机器人_财会类专业建设改革千人高峰论坛圆满召开!
- [转]一文解释PyTorch求导相关 (backward, autograd.grad)
- 九、N-gram语言模型
- 用 Python 将微信热文转换成Word文档 | 神级操作