Qt配置安卓开发环境
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、准备工作
- 二、开始配置
- 1.安装对应的Android Kit
- 2.配置Creator
- 三、创建Demo
- 三、运行
- 1、Creator
- 2、Android Studio运行
- 四、存在的问题
- 总结
前言
经常开发Qt的人都知道Qt除了支持PC环境还支持Webassemble环境和Android环境。PC环境基本上不需要配置,安装好之后就可以直接用了,Android环境稍微麻烦一些,今天我就给需要Andriod环境的同学们写一个配置指南。
我的环境是6.8.3,建议使用Qt6的版本,我这里遇到的Qt5版本是有些问题的。
一、准备工作
Android Studio ,我觉得这个是必须的,你既然决定使用安卓了,这个IDE肯定必不可少了,而且后面需要它来安装SDK。这里我用的是2024.1,一定要用带java-17的。
二、开始配置
这里肯定是默认你已经安装好Qt环境了,包括用到的Android Kit,如果你没有安装Android Kit就按照下面的流程先安装,否则没法进行下一步。安装过的跳过第一步直接进入第二步。
1.安装对应的Android Kit
打开Qt MaintenanceTool这个是在线安装工具,是最方便的一种办法。
注:Qt5.14以后都不提供离线安装包了,后面的版本要么通过在线工具安装,要么源代码编译。

Android勾选上,点下一步等待完成。

2.配置Creator
目前安卓开发只能在Creator上操作,比入Clion是不能操作开发Android的,或者说需要很复杂的配置。
编辑->设置->SDKs
下面是我的配置环境,是配置好的Android环境,可以直接开发了。

JDK 位置:一定要选java-17,Android Studio 2024.1默认自带java-17环境的,在Android Studio安装目录下的jbr目录。
注:不同的Android Studio带的JDK版本是不一样的,我的2024.1带的是17。
Android SDK的路径:这个就是你Android Studio默认使用的SDK路径即可,Creator和Studio可以共用SDK路径,除非你不想这么做,你一定要使用独立的SDK路径就另外指定一个目录即可。这里我觉得它俩应该没有什么冲突,维持一致即可。
安卓 NDK 列表:这个先不要管,等你配置好会自动检测的,前提是你已经安装NDK了。NDK是必须安装的,因为Qt要把你写的代码编译成Android系统支持的.so。
题外话:NDK是安卓专有的交叉编译工具链,它可以允许你在Windows或Linux系统上交叉编译出可以运行在手机上的程序(so),虽然都是Linux内核,但是它编译出来的so和Linux系统编译出来的so不通用!

注意:还是前面说的JDK版本必须和SDK版本匹配,否则检测不到Platform version。
三、创建Demo
如果上面全打绿勾了,说明可以开发Android程序了。像创建PC程序一样创建一个程序,最后构建套件勾选Android,这里用x86_64演示(我的虚拟机是x86_64的)。现在很多手机都是Arm64的,那就勾选Arm64的构建套件即可。

编译等待成功,这个时候你其实已经得到.apk了,这不过没有配置测试设备,还不能直接运行。
三、运行
我是虚拟机上运行的,你也可以插上真机。这个时候有两种方法调试Android程序,1、就是直接在Creator上调试,2、在Android Studio上调试,下面分别说明方法。
1、Creator
编辑->设置->设备

添加Android 设备

选择架构和版本
你需要先去SDK下载虚拟机镜像才能操作。如果你是开发Android的程序员,你肯定知道怎么操作,或者网上搜一下。

成功后你的构建套件就会出现可选项,这个时候你就能直接在Creator上运行程序了。

最后,点击左下角的运行,就会构建->编译->打开虚拟机->安装->运行一气呵成。
2、Android Studio运行
很简单,用过Studio的人都会。打开项目选择Qt项目目录即可。
build->架构文件夹->andoird开头的文件夹,别打开错了。

下面的Android程序员都知道了:
gradle构建->编译->run

四、存在的问题
1、有些操作画面撕裂,比如下面的

这里真的要说两句,首先暂时不知道产生的原因,真机也有问题。堂堂大公司,居然做成这个样子,很多组件我都试过,各式各样的渲染问题,我感觉这不是一个普通程序员能解决的。
2、https证书问题
这个真该好好吐槽下,反正你直接把http改成https大概率是行不通的,需要切换backend。
3、等等
这个需要大家一起去探索了,无论如何至少看到东西了。
总结
1、我感觉Android的问题可能比Webassemble还大,主要是渲染撕裂一类的,其它https有办法解决。
