我眼中的Qt for Android

我眼中的Qt for Android       

引子

        前几天,我分享了一下qt for android,从大家的反应和回馈,我看到两种极端的状态。一个是:“太好了!想做Android开发但是不想转java,这下不用了!” 另一个是:“不要在Qt上浪费时间了,它顶多在Android上跑个Hello world,别的什么也跑不了。”
       我先说说我对Qt for Android的客观认识。首先,从现有阶段看,不得不承认TA并不是一个成熟的技术(工具)。在大型项目中,还是不建议使用qt for android开发的,因为资料太少,我们无法快速深入的在大脑建立起qt for android网络,在遇到问题的时候,解决起来就很棘手。但是,绝不是说仅仅就能跑个Hello world,如果真的这么一无是处,TA就没有存在的意义,也就不会吸引大批开发者深入研究和优化了。要知道,世上最简单的事情就是批评和怒斥。我再次强调一下,我只是分享我所看到的知道的,不带任何向导性。对于技术本身, 仁者见仁,智者见智


品味与探究

        当我看到这么一个技术工具,我的好奇心驱使我探究一下(1)TA到底是如何实现的,(2)程序在Android上执行效率和性能怎么样,(3)较常规的Android java开发和jni c++开发而言,两者之间有什么可以相互借鉴, (4)倘若Google真的开放纯c++开发,那么java和qt for android又是怎样的一番光景?

         一个开发者分享他某一个程序的设计思路:在Qt下通过jni得到java Env,从而使用GPS等android API,并且已经实现:

JNIEnv *currEnv;
currEnv = 0;
if (currVM->AttachCurrentThread((void **)&currEnv, NULL)<0)
{
     emit error("Cannot attach the current thread to the VM");
}


       也许因为我对Qt信号和槽的情有独钟,看到emit就感到很亲切,并且被深深的吸引了。那么从Qt for android 的qt工程源码看,到底是如何在android上成功启动并运行的呢?
     

启动流程分析

       用qt-creator创建的每个应用程序中,src下的文件都是基本相同。因为启动程序,创建接口,链接库,这些操作是每个应用程序所必需的,最初的qt程序被编译成了lib**.so的动态库,当调用JNI接口startQtApp函数时真正启动了qt程序。
      执行程序的入口在src/eu/licentia/necessitas/industrius/QtActivity.j
  • 27
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 66
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 66
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值