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

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

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

相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
工程师老罗4 小时前
如何在Android工程中配置NDK版本
android
lly2024065 小时前
Bootstrap 警告框
开发语言
2601_949146535 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧5 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
在路上看风景5 小时前
19. 成员初始化列表和初始化对象
c++
KYGALYX5 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb01035 小时前
C++课后习题训练记录Day98
开发语言·c++
执笔论英雄6 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog6 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习