最近准备把地面站项目升级到 QGroundControl 5.0,于是重新搭建了一套 Android 开发环境。
原本以为和 QGC 4.x 差不多,结果一上来就连续踩坑:
Qt版本不匹配
Android Kit不显示
NDK版本错误
Gradle构建失败
折腾了几个小时后终于成功编译并运行在安卓手机上。
本文记录完整过程,希望帮大家少走弯路。
一、QGC 5.0 与 QGC 4.x 的区别
很多人直接按照以前的 QGC 4.3、4.4 教程配置环境,结果发现根本编译不过。
原因是官方已经完成了技术栈升级。
QGC 4.x
Qt 5.15.2 qmake JDK 11 NDK r21
QGC 5.0
Qt 6.8.3 CMake JDK 17 NDK 26.1
官方文档明确说明:
Qt 6.8.3 only
不要使用其它 Qt 版本。
否则即使编译通过,也可能出现稳定性问题。
二、安装 Visual Studio 2022
虽然最终编译使用的是 Qt Creator + CMake。但是,MSVC 编译器必须安装下载:
Visual Studio 2022 Community
安装时勾选:
Desktop development with C++
其余内容保持默认即可。
很多新手遗漏这一步,导致 Qt Creator 无法生成有效 Kit。
这里安装vs主要是编译Windows版本,因为安卓开发代码很慢,我们一般用Window编译调试,然后移植安卓比较节约时间。
三、安装 Android Studio
下载安装最新版 Android Studio。
安装完成后打开:
SDK Manager
建议安装:
Android SDK Platform 34
Android SDK Build Tools
Android Platform Tools
Android Command Line Tools
安装完成后记录:SDK路径
后面 Qt Creator 会用到。
四、安装 Qt 6.8.3
这里是整个环境最关键的一步。
千万不要安装:Qt 6.5 Qt 6.6 Qt 6.7 Qt 6.9
QGC 5.0 官方指定版本:
Qt 6.8.3
安装 Qt Online Installer。
选择:
Custom Installation
如果看不到:
Qt 6.8.3
需要勾选:
Archive
然后刷新版本列表。
五、Qt 组件选择
推荐勾选:
Desktop
Qt 6.8.3── MSVC2022 64-bit
Android
Qt 6.8.3── Android
qt安装成功后,直接测试编译Window版本的QGC:
windows版本的环境比较简单,直接打开cmakeList然后编译就可以,一路都很顺畅,成功编译:
测试下视频流:
六、安装 JDK17
QGC 5.0 官方 Android 构建要求:
JDK17
很多老教程还在使用:
JDK11
这是 QGC 4.x 的方案。
如果继续使用旧JDK,Gradle经常报错。
建议直接安装:
OpenJDK 17
或者:
Android Studio 自带 JDK
七、配置 Android NDK
官方推荐:
NDK 26.1.8937393
在 Android Studio:
SDK Manager→ SDK Tools→ NDK(Side by side)
安装对应版本。
安装完成后记录:
NDK路径
例如:
D:\Android\Sdk\ndk\26.1.8937393
八、下载 QGroundControl 源码
官方仓库:
git clone --recursive -j8
https://github.com/mavlink/qgroundcontrol.git
这里一定要注意:
不要下载 ZIP
很多人喜欢:
Download ZIP
然后发现:编译失败
原因是:
Submodule 丢失
QGC 官方明确要求:
必须使用 Git Clone
九、更新子模块
首次拉取完成后执行:
git submodule update --init --recursive
后续每次更新代码:
git pull
git submodule update --recursive
这是很多编译错误的根源。
十、配置 Qt Creator
打开:
Qt Creator
进入:
Edit→ Preferences→ Devices→ Android
配置:
JDK SDK NDK
配置正确后应该出现:
Android Kits
例如:
Qt 6.8.3 Android ARM64-v8a
如果这里为空:
通常是 SDK、NDK 或 JDK 路径配置错误。
十一、打开 QGC 工程
QGC 5.0 不再使用:
qgroundcontrol.pro
而是:
CMakeLists.txt
直接:
Open Project选择:CMakeLists.txt即可。
这里会报错:
gstreamer错误
需要改下源码cmake
重新运行cmake后:
十二、选择 Android Kit
配置项目时选择:
Qt 6.8.3 Android ARM64-v8a
建议先构建:
Release
不要选 Debug。
原因很简单:
Debug APK 特别大启动很慢
十三、开始编译
点击:
Build
或者执行:
cmake--build build--config Release
首次编译时间比较长。
因为需要:
生成QML缓存编译Qt模块链接Android库生成APK
十四、连接手机运行
手机开启:
开发者模式USB调试
连接电脑后:
Qt Creator→ Run
Qt 会自动执行:
adb install
安装 APK。
十五、常见踩坑
1. Android Kit 不显示
原因通常是:
SDK未配置 NDK未配置 JDK未配置
或者:
Qt安装时没勾选Android组件
2. Gradle 构建失败
优先检查:
JDK版本
QGC 5.0:
JDK17
最稳。
3. Qt Creator 找不到 Qt 6.8.3
安装 Qt 时:
必须勾选 Archive
否则历史版本不会显示。
4. QML 插件缺失
典型错误:
Qt Quick.Controls plugin not found
通常是:
QML依赖未正确部署
删除构建目录后重新生成,大多数情况可以解决。
5. Android 视频显示异常
QGC 的视频系统主要基于:
GStreamer
相关代码位于:
src/VideoManagersrc/VideoReceiver
如果计划接入:
FFmpeg MediaCodec自定义UDP视频流
这里将是后续二次开发重点。
十六、总结
QGroundControl 5.0 的安卓开发环境虽然比 4.x 更复杂,但整体架构也更加现代化。
核心版本组合建议直接固定:
QGC 5.0
Qt 6.8.3
Visual Studio 2022
JDK 17
Android SDK 34
NDK 26.1
只要版本完全对应,基本都能顺利完成编译。
环境搭建只是开始。
真正有意思的部分,其实都在后面:
• MAVLink 通信机制与协议扩展• SITL 多机仿真与集群测试• 多路视频显示• FFmpeg / MediaCodec 低延迟解码优化• 地图系统与航线规划开发• 3D 飞行视图与OpenGL渲染• 集群编队与协同飞行控制
后续我将持续分享 QGroundControl 二次开发实战,从环境搭建到功能开发,从源码阅读到项目落地,记录探索无人机地面站开发的核心技术。
感兴趣的朋友请关注我,关注后回复“5.0源码”即可获取对应的源码。