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辅助多次修改代码后,才终于成功实现了手机的摄像头画面打开。

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

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

相关推荐
rannn_1117 分钟前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
杜子不疼.10 分钟前
PyPTO:面向NPU的高效并行张量编程范式
开发语言
lly20240611 分钟前
C# 结构体(Struct)
开发语言
游戏开发爱好者816 分钟前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码203521 分钟前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
艾莉丝努力练剑21 分钟前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
张人玉21 分钟前
VisionPro 定位与卡尺测量学习笔记
笔记·学习·计算机视觉·vsionprp
YMWM_21 分钟前
python3继承使用
开发语言·python
黑码哥37 分钟前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder