在Windows平台上用Qt开发Android应用,第一步就是配置好开发环境。我去年给公司做智能家居中控项目时,就遇到过环境配置的各种坑。这里分享下经过实战验证的配置方案。
首先需要下载Qt 5.14.2安装包,这个版本对Android支持比较稳定。安装时记得勾选"Android ARMv7"组件,这样会自动安装配套的Android工具链。我建议使用在线安装器,它会自动处理依赖关系,比离线包省心很多。
安装完成后打开Qt Creator,重点检查三个配置:
有个容易忽略的点:Android SDK的安装路径不能有中文或空格。我有次把SDK装在"Program Files"目录下,编译时就各种报错,后来单独建了个D:\AndroidSDK目录才解决。
qmqtt是Qt官方的MQTT协议实现库,但默认安装包不包含这个模块。我们需要从源码编译,这里有几个关键步骤:
编译完成后,在输出目录的lib文件夹里能找到生成的.so库文件。这里有个实用技巧:建议把整个build目录备份到安全位置,以后换电脑开发时可以直接复用这些编译好的库。
把编译好的qmqtt库集成到Qt环境需要三步操作:
这里最容易出错的是头文件处理。我遇到过因为漏拷贝了几个头文件,导致后续开发时提示找不到MQTT类定义的情况。正确的做法是把src/mqtt整个目录复制过去,然后只保留.h文件。
Qt自带的subscriptions示例是个很好的起点。我建议这样做测试:
实测发现,在华为EMUI系统上运行时需要特别注意:要在手机设置里允许应用的后台网络权限,否则连接会频繁断开。这个坑我调试了整整一天才发现。
连接Android手机调试时,建议先用adb devices命令确认设备已被识别。如果遇到连接问题,可以尝试:
部署成功后,可以在Qt Creator的"应用程序输出"面板看到详细的调试日志。建议在代码里加些qDebug()输出,方便跟踪MQTT连接状态。
经过多次测试,我发现这些优化措施很有效:
记得在pro文件里加上优化选项:
qmake复制android {
ANDROID_EXTRA_LIBS += $$PWD/libs/libQt5Mqtt.so
QMAKE_CFLAGS_RELEASE += -O2
QMAKE_CXXFLAGS_RELEASE += -O2
}
这里列出几个我遇到过的典型问题:
问题1:编译时报"perl不是内部命令"
问题2:手机安装APK时提示签名冲突
问题3:MQTT连接经常超时断开
问题4:发布大消息时客户端崩溃
开发过程中多查看Qt Creator的"编译输出"和"应用程序输出"面板,大部分错误信息都能在这里找到线索。遇到问题时,先尝试clean项目再重新构建,有时候能解决莫名其妙的编译错误。