Qt 工具箱是一个使用广泛的跨平台GUI工具箱,可用于 Windows、Linux、Mac OSX 和许多手持平台。QT 具有良好结构化(但灵活)的面向对象的结构、清晰的文档以及直观的 API。

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/下。

下图是效果图:

上文详细介绍了开发环境的操作步骤与发生错误的解决方案,整个过程是非常简单。有兴趣详细学习Qt的朋友可以自己在网上查询资料,或者等待我们后续更新。

qt如何编写android程序,如何利用Qt开发Android应用程序相关推荐

  1. 【微信小程序】利用MPFlutter开发微信小程序

    ✌ 作者简介:信年✘ ✌,大家可以叫我 ❤信年❤ ,一位精通五门语言的博主 ✌

  2. [免费专栏] Android安全之利用JDB调试Android应用程序(动态代码注入技术)

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  3. Android Studio 教程:入门开发第一个程序

    Android Studio 教程:入门开发第一个程序 2018.09.11 14:30 16005浏览 开发第一应用 可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a ...

  4. Qt实战案例(42)——利用Qt实现自定义标题栏功能(自定义最大化、最小化、关闭等功能)

    目录 一.项目介绍(为什么要自自定义标题栏功能) 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 隐藏边框 4.2 设置最大化(还原),最小化,关闭按钮的样式风格 4.3 关闭按钮的实现 ...

  5. 怎么用python编写个apk_【android】如何利用python做Android项目自动化构建,并一键实现构建结果发送到钉钉通知以及通过二维码下载apk或者其他处理等功能...

    今天我们来谈一谈用python做Android项目自动化构建的过程.我们知道在常规的Android开发过程中,开发人员打包的时候需要在Android Studio当中进行,或者通过gradle命令,但 ...

  6. python开发安卓程序-如何使用python开发android应用

    Python是一种面向对象.解释型计算机程序设计语言,其源代码和解释器CPython遵循GPL(GNU General Public License)协议Python语法简洁清晰,特色之一是强制用空白 ...

  7. python开发安卓程序-如何使用python开发Android手机应用?

    在使用python开发android应用之前我们需要准备好环境,环境需要安装PythonForAndroid,然后开始编程,编程时打开eclipse, 创建一个新的android project &q ...

  8. 如何利用C#开发“通讯录”小程序

    本文介绍了数理系15级魏道鑫同学汇报的成果,利用C#开发的通讯录小程序.

  9. 利用HTML5开发Android笔记(中篇)

    资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础 学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇 ( ...

  10. Android:使用Intellij IDEA开发安卓apk程序HelloWorld

    在IDEA中也可以开发安卓程序. 1.安装AndroidSDK 点击File->new project 第一次没有安装过AndroidSDK,会提示你下载安装,点击Install SDK,一路下 ...

最新文章

  1. 养娃时做过的蠢事,程序员必看!
  2. c++中const与函数一起用的时候需要注意什么?
  3. girton college map
  4. java中常用的一些方法(一)
  5. 选对论文,效率提升50% | 本周值得读
  6. JDK14中的java tools简介
  7. mysql修改字段的顺序_Mysql中如何修改字段的排列顺序?
  8. 网吧java安装路径,java环境变量配置
  9. RealFlow翻译教程——海洋波浪
  10. 手写数字识别代码,可以跑通
  11. 如何使用SIOS DataKeeper在AWS EC2中配置较少SANSQL Server群集
  12. LINUX下载编译jpeglib
  13. python将图片转换成二进制文本逻辑_将python图片转为二进制文本的实例
  14. 软件无线电波测试软件,SDR软件无线电的测量
  15. mysql 索引失效的7种情况
  16. 【学习笔记】市场分析报告的基本框架
  17. Linux启动过程——EFI
  18. 秦小明 第七讲 资产定价模型,股票定价
  19. 机器学习笔记(3.1)
  20. 线性代数(四)-矩阵分块法

热门文章

  1. 最牛通达信短线超强波段主图指标公式 源码
  2. mongodb执行sql脚本文件
  3. 最具有中国特色的脑筋急转弯
  4. DoDAF示例图绘制
  5. Java多线程笔记(刘意day23、24)
  6. jmeter录制 过滤_Jmeter录制pc脚本
  7. 《推荐系统实践》(一)好的推荐系统
  8. iec104规约遥测遥信解析笔记
  9. Linux期末考试试题长沙理工,Linux期末考试试题8套(含答案)
  10. 赚外快—常见编程接单的网站集合(20余个)