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上相关推荐

  1. Go编译android,go语言的程序跑在android上

    之前写了一个检查页面的golang程序http://www.simonzhang.net/?p=1346.就用这个测试一下放到android上看看效果如何.但是我在windows上的golang还是产 ...

  2. QT应用程序开发到Android

    Qt最大的优势就是跨平台,一次性开发的Qt应用程序,可以跑Windows.跑Linux.跑MAC--如今移动平台Android操作系统如此火爆,Qt当然不能放过对android的支持,对了,还有iph ...

  3. linux .net程序,.Net程序跑在Linux上

    .Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了. Linux Disibutaion:Open Logic 7.2 1.Install .N ...

  4. Linux程序移植到Android上

    序言: 由于本人还是比较偏重于先说明原理在说明实际操作步骤,要知其然更要知其所以然,如下图所示: 传统的linux系统中的程序基本都依赖于glibc(至于什么是glibc可以百度去),而右边AOSP( ...

  5. android用什么更新应用程序,如何在Android上更新应用程序 教你如何更新安卓手机APP...

    您从Play商店下载的大多数Android应用程序都会出于各种原因而定期提供更新:添加功能,错误修复,提高安全性...了解如何在Android智能手机上管理应用程序以及如何使它们保持最新. 如果您想要 ...

  6. android指南针程序,如何在Android上制作精确的指南针

    我的Android应用程序显示了世界上某个地方的方向,因此需要获得罗盘度. 这是我一直用来计算学位的代码: public void getDirection() { mySensorManager = ...

  7. Qt应用程序开发九:上传文件

    上传参数如下: 核心代码: void HttpReq::upload(QString jsonfile) {if(!QFile::exists(jsonfile))return;QHttpMultiP ...

  8. Qt平台和编译器说明-Android

    Qt平台和编译器说明-Android 平台和编译器说明-Android Qt Creator中的Android开发 应用程序包 部署方式 使用Ministro进行部署 部署进行调试 插件和导入的特殊注 ...

  9. 推测用户行为 程序员分享Android开发经验

    从G1上市到现在,市面上已经出现了至少30款Android手机.为什么至今依然有一些用户在抱怨Android不好用,在相关的开发中,什么才是真正值得关注的,开发的核心是什么?为什么移动应用需要格外关注 ...

最新文章

  1. c++ clr编译dll在c#调用时出现“试图加载不正确的格式”“找不到dll”错误的解决...
  2. Java String 到底是引用传递还是值传递?
  3. 字符设备驱动程序之poll机制
  4. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )
  5. Linux调试——gdb调试器的简单使用调试coredump文件
  6. mybatis清除一级缓存的几种方法
  7. CSS设置列表的符号
  8. 用css3制作旋转加载动画的几种方法
  9. vc mysql free result_VC的MySQL编程
  10. 记录几条简单的正则表达式
  11. Automatic Judge
  12. Android AIDL
  13. 5.1 Zend_Log_Writer
  14. 定位CPU高问题三把斧
  15. 小知识--DOS命令2
  16. 【爬虫】Python爬虫实战,Python实现中国地铁数据可视化arcmap
  17. mysql复合索引加锁_Mysql加锁过程详解
  18. ParrotSec 中文社区 QQ群认证 Openssl解密
  19. 实时数据库和关系数据库的区别
  20. 2018年第16周-ZooKeeper基本概念(配搭建过程和Master-Workers例子)

热门文章

  1. 微课视频小学用计算机画画,初识电脑绘画
  2. java wav 时间,Java-调整WAV文件的播放速度
  3. unity3d 绘制小地图_老师!我想用Tilemap做元气骑士款地图!
  4. java 包权限_Java基础(十二)之包和权限访问
  5. Windows环境下MySQL 5.7的安装、配置与卸载
  6. golang中文文档_Golang开发环境搭建
  7. 张迈机器人_财会类专业建设改革千人高峰论坛圆满召开!
  8. [转]一文解释PyTorch求导相关 (backward, autograd.grad)
  9. 九、N-gram语言模型
  10. 用 Python 将微信热文转换成Word文档 | 神级操作