跨平台应用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插件。

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的框架结构:

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等设备上。

   

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

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

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

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

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

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


 

更多相关文章

  1. Android开发:Android(安卓)Studio发布
  2. Android(安卓)最火的快速开发框架XUtils
  3. Android中的动画详解系列【2】——飞舞的蝴蝶
  4. Android--快速开发框架 afinal
  5. Android之使用Android-query框架进行开发(一)
  6. ANDROID物联网开发
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android的EditText里文字和图片混合编辑
  2. Android(安卓)studio无法连接识别检测各
  3. 《Android第一行代码》笔记
  4. Android建立dialog
  5. Android录制屏幕的实现方法
  6. Android学习App调试的几个命令实践
  7. Android数据保存之SharedPreference
  8. [置顶] Activity启动模式 及 Intent Flag
  9. React Native如何适配iOS \ Android样式
  10. 外形设计有亮点,日本电讯商 KDDI 发布多款