Qt配置安卓开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

经常开发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有办法解决。

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust