跨平台应用app开发实践方案 Qt5 for Android iOS

自Qt 5.2 发布后(目前最新版本:Qt5.11),开始支持 Android 、iOS移动平台上的应用程序开发 ,Qt for Android 上的应用程序开发成为除较常规的 Eclipse (Android Studio) + android SDK之外的另一个可探究的解决方案;Qt for iOS上的应用程序开发成为除较常规的 XCode + Objective-C(Swift)之外的另一个可探究的解决方案。

一、Qt跨平台特性

1、Qt是一个跨平台的C++图形用户界面应用程序框架,利用Qt开发的程序可以实现一次编写代码,多次编译到不同平台上,如Windows、Linux、MAC、Android、iOS、Windows Phone等。

2、Qt开发的程序,可实现在多操作系统以及移动设备之间获得一致的跨平台用户体验 。

建议:当要开发的程序需要支持Windows、Mac OS X、Linux、Android、iOS等平台,无论是从人力、成本还是工期方面考虑,Qt是值得考虑的技术方案之一。

二、跨平台实现的基本框架

Qt的跨平台特性的核心部件是QPA插件。

跨平台应用app开发实践方案 Qt5 for Android iOS_第1张图片

1、QPA介于 Qt 与不同平台之间,它针对各个平台编写平台相关的QPA插件,直接 与各个平台融合在一起,简化了移植工作。

2、对开发者来讲,一次编写,多次编译,到处运行。

3、QPA是Qt程序main函数调用的入口,通过JNI方式调用;

三、Qt for Android项目介绍

      1、Qt for Android应用程序组成部分

              1-1、  原生部分  

         Qt程序C/C++/代码,被编译成.so文件 包含一个或多个动态库文件( .so ),以及所有需要的依赖相关的库文件。

             1-2 、 Android相关的部分      

                   (1)Android manifest文件 应用程序的入口

                         Android 使用这个文件决定启动哪个应用或活动,它描述了应用需要的权限、 Android API 版本等信息

                  (2)Qt on Android应用的入口文件(QtActivity.java和QtApplication.java)

                         用来加载应用程序所需的依赖库、是 Qt QPA实现的 和 Android 世界之间的通信桥梁的一部分。

                  (3)资源文件 

                           Android布局文件、字符串资源、图片资源等

      2、Qt for Android项目工程相关介绍

       下面以技术调研、尝试性项目工程相关要点为例,说明Qt for Android开发的app的框架结构:

跨平台应用app开发实践方案 Qt5 for Android iOS_第2张图片

2-1、  Qt部分

      用于软件界面的开发,可以使用传统的Qt Widgets ,对于移动端开发来说,建议使用 QML,协同 JavaScript,其全面支持触摸操作、流畅的动画效果,简单快捷、渲染效果更佳、界面更炫酷 。

2-2、Android部分

     基于Qt for Android开放需要相关的Android SDK、Android NDK等开发环境

2-3、JNI交互部分      

 (1)Qt 要实现 Android 的所有功能是不现实的。要想使用 Android 系统已经具备的功能,就需要通过 JNI 来访问它们。 JNI 是在 Java 和 C++ 之间相互调用的唯一途径。      

(2)通过JNI方式调用 Android 系统功能来扩展应用如:拍照、屏幕常亮、定位、连接网络、屏幕旋转等功能。

    3、使用Qt Creator开发Android程序要点

      3-1、Android Manifest          

             作用:设置程序图标、包名、版本号、使用API、权限等

      3-2、指令集 armeabi-v7a,armeabi,和x86说明          

               由于Android设备种类众多,在编译应用程序时,需要指定使用哪种指令集来进行编译;            

            (1)armeabi-v7a:                      

                    目前主流的Android设备 是基于armeabi-v7a架构的,该指令的CPU支持硬件浮点运算,并可以兼容armeabi指令集和x86的设备

             (2)armeabi:                    

                    支持所有 ARM 设备,不支持硬件浮点运算,是针对普通的或旧的arm cpu。          

            (3)x86:                    

                     支持基于硬件的浮点运算的 IA-32 指令集,一般可支持Android和Windows双系统。

四、Qt for iOS项目简介

   1、使用Qt开发iOS程序(不扩展本地应用方式)

           如果使用Qt for iOS开发的程序,不依赖于iOS系统自身的功能,比如打开摄像头、扫描二维码、拍照等,则与传统的桌面Qt程序开发相同,很简单,只需要选择不同的套件即可自动编译并部署运行到iPad,iPhone等设备上。

跨平台应用app开发实践方案 Qt5 for Android iOS_第3张图片

   

2、QT+Objective-C混编(扩展本地应用方式)

针对上述方式1的不足,可以采用:QT+Objective-C混编(扩展本地应用方式)

使用Qt开发的程序,首先转换成Xcode工程,使用XCode开发工具以C++与Objective-C混编方式进行开发

由于QT对于iOS本地应用的调用实现的不是很好,所以使用Objective-C混编方式则可以很方便的扩展本地应用:比如打开摄像头、扫描二维码、拍照等。

以上,是本人通过技术尝试实践,所总结的项目开发要点,供大家参考,由于水平有限,如有错误或不妥,请见谅并欢迎批评指正!

另外:如下是通过技术探索尝试,完成开发的基于Qt for Android的App部分界面截图:


跨平台应用app开发实践方案 Qt5 for Android iOS_第4张图片

跨平台应用app开发实践方案 Qt5 for Android iOS_第5张图片

跨平台应用app开发实践方案 Qt5 for Android iOS_第6张图片

 

更多相关文章

  1. 如何在自己的程序中添加appWidget(附简单代码)
  2. android 7种网络连接方式--IT蓝豹
  3. Android 使用WebView加载含有echarts的页面,截图不显示的解决方式
  4. Android应用程序框架之无边界设计意图
  5. Android的一个关于Activity和UI的小程序
  6. Android传感器、语音识别、定位系统、Google Map API、快捷方式
  7. [置顶] Android App关于应用程序升级的一点内容
  8. android 7种网络连接方式《IT蓝豹》

随机推荐

  1. Android一次刷机
  2. Android(安卓)编译系统分析
  3. Android(安卓)webkit 事件传递流程
  4. Android如何平移一个View
  5. android:launchMode="singleTask" 与 onN
  6. Android(安卓)webkit 事件传递流程
  7. android 开发中判断网络是否连接的代码
  8. android 启动页与数据保存
  9. android Button 颜色的变化(点击,放开,点击
  10. Android(安卓)中常用的五种布局