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

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

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

相关推荐
疯狂的喵43 分钟前
C++编译期多态实现
开发语言·c++·算法
2301_765703141 小时前
C++中的协程编程
开发语言·c++·算法
m0_748708051 小时前
实时数据压缩库
开发语言·c++·算法
小白郭莫搞科技1 小时前
鸿蒙跨端框架Flutter学习:CustomTween自定义Tween详解
学习·flutter·harmonyos
小魏每天都学习1 小时前
【算法——c/c++]
c语言·c++·算法
感谢地心引力1 小时前
安卓、苹果手机无线投屏到Windows
android·windows·ios·智能手机·安卓·苹果·投屏
lly2024062 小时前
jQuery Mobile 表格
开发语言
惊讶的猫2 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
阳光九叶草LXGZXJ2 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
m0_748233172 小时前
30秒掌握C++核心精髓
开发语言·c++