本文将手把手教你如何在Windows环境下,使用Qt编译出安卓应用程序。

Qt是一个优秀的跨平台开发工具。我们利用Qt可以很方便地将一次编写的应用,多次编译到不同平台上,如Windows、Linux、MAC、Android、iOS、Windows Phone等。开发者只需掌握Qt的C++编程与界面制作方法,即可制作出包括手机APP在内的跨平台应用。

需要注意的是,Qt对Android与iOS、UWP等平台的支持目前还不是很完美。使用Qt来进行手机应用开发,制作出来的成品无论是界面、系统资源调用还是稳定性,肯定不如使用原生开发环境开发的要好。使用Qt来进行APP开发主要适合非软件专业的学生、非APP开发行业的开发人员(如电子设计爱好者)用来开发调试用的APP,相较重新学习一个甚至多个系统下的软件开发,这无疑是十分节省时间和精力的。

1.    安装JDK:编译Android程序必需的Java开发环境

https://developer.android.com/ndk/downloads/index.html

下载Windows环境下最新版本安装即可。

2.    安装Apache Ant

“Apache Ant is a Java library and command-line tool thathelp building software”

http://ant.apache.org/bindownload.cgi

下载最新版复制到你的目标安装目录下进行解压即可。

3.    安装Android NDK

安卓原生开发工具包 NDK可用于实现使用C/C++语言构建Android程序。

https://developer.android.com/ndk/downloads/index.html   或

http://tools.android-studio.org/ 最下方找到NDK

下载最新版本直接解压即可。由于文件较多,建议复制到你的目标安装目录下进行解压。

4.    安装Android SDK

http://tools.android-studio.org/index.php/sdk/

选择下载Windows最新的SDK Tools,安装后运行SDK Manager,勾选如下工具。

(如果无法***,请按照http://tools.android-studio.org/index.php/proxy重新配置软件源)

如下图,根据自己需要,勾选一个Android版本的开发工具。之后点击“Installxxx packages”安装即可。

5.    下载并安装Qt与Qt On Android

https://info.qt.io/zh-cn/download-qt-for-application-development

注册并点击“获取开源包”,再点击绿色“Download Now”按钮下载最新版的Qt在线安装器。

打开安装器后,登录刚才注册的账号,在“选择组件”中勾选所需Qt版本的如下组件。“MinGW”是Qt在Windows下的编译工具,“Android”开头的即为安卓环境下对应处理器的开发工具,“UWP”即Windows Phone的开发工具。

6.    安装完成后,打开Qt Creator,依次点击菜单栏“工具-选项-设备-Android”,配置JDK、SDK、NDK、Ant的路径。点击“Start AVD Manager”可创建AVD,方便之后的调试。(电脑配置较差的可以略过,我们可以使用Qt编译出Windows环境下的版本进行调试,确认程序没有问题之后直接使用生成的apk进行真机测试即可,个人暂时没有遇到因环境不同导致的兼容问题)

7.    新建或打开一个Qt工程,在工程配置页面中勾选Android对应处理器的环境。

8.    在左侧边栏“项目”中,选择Android构建项目,选择“Android build SDK”之后,点击“Create Template”。该操作会在项目根目录创建“android”文件夹与相应文件,并自动在.pro文件中添加创建的文件。

9.    在弹出的“AndroidManifest.xml”中,可配置包名称、目标SDK版本以及APP版本号、显示名称、图标等信息。右击项目列表中的“AndroidManifest.xml”文件选择“用...打开-普通文本编辑器”可更改如APP屏幕方向等更多的配置,详细方法请看(http://blog.csdn.net/liukang325/article/details/44944267)。

10.  点击左下角的锤子(编译)按钮,即可编译出Android应用了,目标apk文件将储存在输出文件夹的“android-build\bin”文件夹中。

利用Qt开发跨平台APP的更多相关文章

  1. 利用Qt开发跨平台APP(二)(iOS,使用Qt5.9,很详细,有截图)

    本文将手把手教你如何使用Qt编译出iOS应用程序. Qt是一个优秀的跨平台开发工具.我们利用Qt可以很方便地将一次编写的应用,多次编译到不同平台上,如Windows.Linux.MAC.Android ...

  2. 带你从零学ReactNative开发跨平台App开发(一)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  3. 带你从零学ReactNative开发跨平台App开发(十一)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  4. Sublime用户如何快速高效开发跨平台App

    2015年9月15日,APICloud举办了一周年开源分享会,发布开源插件支持Sublime用户开发跨平台App,APICloud 开源技术负责人周兴海分享了Sublime关于插件方面相关的内容. S ...

  5. 带你从零学ReactNative开发跨平台App开发(二)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  6. 带你从零学ReactNative开发跨平台App开发-[react native 仿boss直聘](十三)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  7. 带你从零学ReactNative开发跨平台App开发(十)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  8. 带你从零学ReactNative开发跨平台App开发(九)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  9. 带你从零学ReactNative开发跨平台App开发[expo 打包发布](八)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

随机推荐

  1. iOS多线程编程之创建线程(转载)

    一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 (1)创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:sel ...

  2. Shell初学(四)运算符

    一.算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30. - 减法 `expr $a - $ ...

  3. 上传指定url文件到阿里云oss

    好处是不用下载到本地,也不用删除本地文件.省事! 先下载阿里云官方代码  https://github.com/aliyun/aliyun-oss-csharp-sdk 引用其中的 aliyun-os ...

  4. 完成向后台添加用户的ssm项目,完整版

    1:ssm框架整合 1.1添加maven依赖pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns: ...

  5. 远程调用Spark平台中的程序

    用scala语言,开发好了在spark平台上可以一直运行的机器学习模型 现在有个需求: 要远程调用该模型的一些方法并获取结果 那么可以使用jetty在服务器端主节点占用一个端口然后对外提供http服务 ...

  6. Iterator源码解读

    //继承关系 public interface Inteator { boolean hasNext(); Object next(); } public interface Iterable { I ...

  7. modelform和modelserializer

    modelform modelform比form强悍很多

  8. ZOJ:2833 Friendship(并查集+哈希)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2833 A friend is like a flower, a rose ...

  9. zabbix 微信报警脚本

    不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动 #! /bin/bash userid=$ content=$ python /data/zabbix/ale ...

  10. [LeetCode] 733. Flood Fill_Easy tag: BFS

    An image is represented by a 2-D array of integers, each integer representing the pixel value of the ...