Qt安卓开发(一)Qt6.10环境配置

前言

多年前刚学qt的时候,曾经配置过它的安卓开发,实现了一个简易的计算器。印象中安卓配置还蛮复杂的,当时好像还运行了个虚拟机的玩意儿,对电脑的配置要求蛮高的。

最近想重拾一下qt安卓,算补充一下技术栈吧。现在已经转到qt6进行开发了,版本是6.10,应该算是最新的最高版本之一了。

配置环境的时候,主要参考的是这篇博文,写得挺好的。
Qt6.8安卓Android开发环境配置

配置的时候建议参考这篇文章。以下我所说的,更多是针对我当前版本,还有自己的一个记录而已。

一、Qt Mantenance Tool安装Android模块

现在的Qt都是用安装工具直接安装所需模块了。我们事后可以打开相应的维护管理工具,检查是否安装了对应版本的安卓模块。

二、安装JDK17.exe

按照教程,我也按照了JDK17的版本。但这玩意儿需要登录Oracle账号,我不知为啥账号密码错误,搞了大半天才给我下下来,气死我了。
Java Downloads | Oracle

我直接选了默认安装路径,应该没问题。

三、配置安卓组件

我这个qt版本下,安卓配置归类到了SDKs页中,这一点和参考博文里不一样,我当时还找了半天,傻傻以为是qt的安卓组件没有安装完全。

找到安卓配置页后,点击设置SDK,等待自动下载,完成后观察是否出现"安卓配置完成"。

还没完,需要点击下载OpenSSL。但很不幸,我是下载失败的,不过它提示给我手动下载的方式了。

我把文件拉取下来之后,把zip丢到了对应的目录(看图),然后再重新点击下载,它就给我自动解压安装,最后也是顺利配置好OpenSSL了。

四、添加真实环境,手机运行程序

原本我是以为可以在仿真虚拟设备上跑的,按照我的理解想要新建一个虚拟的安卓设备,但把程序编译好后,又没办法把AVD跑起来。于是还是聚焦在手机上跑好了。

首先,我们先准备好安卓手机。我现在的手机是小米17pro max。

先开启开发者模式,然后打开usb调试。我其实也不是很懂,建议在设置页输入"usb",然后将一些疑似有关联的选项都开启一下。

然后,我们用usb线连接电脑。我这边的正常反应是需要在手机确定授权电脑,然后在电脑文件管理器中可以找到手机的存储入口,可以点击进去直接增删手机文件。这一点我记得多年前就已经是这样的了。

最后,我们重新打开qt,在设备页中成功找到了真实设备。

可以看到cp架构是arm64-v8a,记住这个东西,选择工程构建方式的时候记得选这个,不然可能会有问题。

*遇到的坑:

我一开始没有连接真实环境,心想着就算虚拟环境跑不起来,我的apk文件不是生成了吗?

于是我想当然地打开了微信电脑端,把apk文件发送到手机端,然后进行安装。

最后的结果就是,要不安装不成功,要不程序打开直接闪退了。估计是对应的安卓架构不对。

五、最简单的安卓程序

新建一个测试工程,简单在qml中添加了几个组件,实现一个点击计数器。

cpp 复制代码
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

Window {
    property int num: 0

    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    ColumnLayout{
        anchors.centerIn: parent

        Text {
            color: "blue"
            font.pixelSize: 36

            text: qsTr("点击计数器")

            Layout.preferredWidth: 200
            horizontalAlignment: Text.AlignHCenter
        }
        Item {
            Layout.preferredHeight: 50
        }

        Text {
            id: name
            color: "red"
            font.pixelSize: 36

            text: num.toString()

            Layout.preferredWidth: 200
            horizontalAlignment: Text.AlignHCenter
        }
        Item {
            Layout.preferredHeight: 50
        }
        Button{
            text: "点它!"
            font.pixelSize: 20

            Layout.preferredWidth: 200
            Layout.preferredHeight: 80

            onClicked: {
                num++;
                cameraId.start()
            }
        }
    }

}

然后,选择对应的构建工具,选择"部署到安卓设备"。

直接点击运行。

qt端也会有打印调试信息:

六、总结

Qt的安卓环境配置就是这样,比我想象中的简单不少。

接下来就可以实现一些自己想要的功能了。

然而这似乎还远远不够,因为当我想要简单实现一下像Windows端的摄像头打开时,发现似乎没那么顺利。在我用ai辅助多次修改代码后,才终于成功实现了手机的摄像头画面打开。

以此也暴露了一个问题,在安卓设备中,想要调用外设需要动态申请权限,这部分内容还需要了解和学习才行。由于对安卓的文件管理系统不熟悉,感觉对于图片保存、数据库文件等的操作也会不一样,打算后续尝试一下。

当然,对于纯界面的东西,接着继续开发就好了。

相关推荐
Hical_W6 分钟前
深入学习CPP17_PMR
c++·学习
xuanwenchao15 分钟前
ROS2学习笔记 - 1、编写运行第一个程序
笔记·学习
惠惠软件22 分钟前
豆包 AI 学习投喂与排名优化指南
人工智能·学习·语音识别
xiaoshuaishuai823 分钟前
C# 实现百度搜索算法逆向
开发语言·windows·c#·dubbo
yuan1999724 分钟前
使用模糊逻辑算法进行路径规划(MATLAB实现)
开发语言·算法·matlab
V搜xhliang024635 分钟前
OpenClaw、AI大模型赋能数据分析与学术科研 学习
人工智能·深度学习·学习·机器学习·数据挖掘·数据分析
计算机安禾43 分钟前
【数据结构与算法】第42篇:并查集(Disjoint Set Union)
c语言·数据结构·c++·算法·链表·排序算法·深度优先
蒸汽求职1 小时前
北美求职身份过渡:Day 1 CPT 的合规红线与安全入职指南
开发语言·人工智能·安全·pdf·github·开源协议
IT乐手1 小时前
java 对比分析对象是否有变化
android·java
YuanDaima20481 小时前
二分查找基础原理与题目说明
开发语言·数据结构·人工智能·笔记·python·算法