Ubuntu20.04
QGC 4.2
ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。
视频教程:
6.1、QGC编译环境安装(ubuntu)
推荐使用在线安装,下载地址:https://download.qt.io/official_releases/online_installers/
我这里下载的是qt-unified-linux-x64-4.4.1-online.run
下载后添加可执行权限并双击运行,如果双击打不开这个软件,在该软件所在目录打开终端执行
./qt-unified-linux-x64-4.4.1-online.run
出现下面的报错:
./qt-unified-linux-x64-4.4.1-online.run: error while loading shared
libraries: libxcb-xinerama.so.0: cannot open shared object file: No
such file or directory
执行下面的命令解决:
sudo apt install --reinstall libxcb-xinerama0
执行完之后就可以打开安装程序,然后一直下一步。直到下面这页面,选择需要安装的qt版本,然后一直下一步安装,注意勾选LTS和Arhive,否则编译QGC时可能会报错
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
at org.codehaus.groovy.vmplugin.VMPluginFactory.(VMPluginFactory.java:43)
at org.codehaus.groovy.reflection.GroovyClassValueFactory.(GroovyClassValueFactory.java:35)
sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev patchelf
GStreamer是视频相关的组件,如果不装的话虽然不影响编译,但编译出来的安卓版地面站会无法显示视频流图像,如下:
参考下面网址安装:
https://github.com/mavlink/qgroundcontrol/blob/master/src/VideoReceiver/README.md
编译ubuntu地面站需要用下面命令安装
list=$(apt-cache --names-only search ^gstreamer1.0-* | awk '{ print $1 }' | sed -e /-doc/d | grep -v gstreamer1.0-hybris)
sudo apt-get install $list
sudo apt-get install libgstreamer-plugins-base1.0-dev
sudo apt-get install libgstreamer-plugins-bad1.0-dev
编译安卓地面站需要下载gstreamer-1.0-android-universal-1.18.5.tar.xz
下载地址:
链接: https://pan.baidu.com/s/1DGqsdTKbFFl-erZZjzPHHQ 提取码: 3vsx
–来自百度网盘超级会员v5的分享
下载后在qgroundcontrol目录下解压,解压后清除重新编译地面站(不清除重新编译可能会报错)后即可编译出可以显示视频的安卓QGC:
如果用qt5.15.2编译qgc4.2.0时出现下面的报错
下载下面的压缩包并解压
链接: https://pan.baidu.com/s/1kFlph1IKEG8aqF4dqUrBSg 提取码: sq00
–来自百度网盘超级会员v5的分享
将下面目录的中内容删除,并用压缩包里面的内容替换,然后重新编译即可
或者将airmap关掉,在qgc主目录下新建user_config.pri,加入内容:DEFINES += DISABLE_AIRMAP
上面的错误在4.2.4版本QGC上只需要再重新编译一次就可以了
如果出现报错:
👎 error: You need to set an executable in the custom run configuration.
解决办法:
选择编译路径下生成的qgc可执行文件即可
编译完出现如下提示
执行
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager
上面这两条命令后需要重启电脑,重启之后地面站才能连接飞控
笔者曾使用jdk18,编译会报错,这里建议安装jdk11
sudo apt-get install openjdk-11-jdk
点击工具->外部->Configure
打开设备那一栏,点击JDK location右边的浏览,
选择下面的目录
然后点击Set up SDK,等待自动安装和配置,安装过程中所以的确认选项选是
安装成功后如下图,正常的话OpenSSL是正常配置的,如果没有正常配置,点击右侧的Download OpenSSL进行配置,最后点击应用,然后点击确定。
QGC的AndroidManifest.xml设置成API31
选择编译套件为安卓
如果软件没有自动识别编译套件,可以手动添加:
点击项目->管理构建套件->Qt版本->添加
选择qt安装目录下的qmake文件
如果没有连接实体手机或者虚拟手机,手机图标右下角为红点
这时在编译安卓版QGC时,会出现下图提示,需要连接手机设备。
10:06:46: The deployment device "22041211AC" is disconnected.
Error while building/deploying project qgroundcontrol (kit: Android Qt 5.15.2 Clang Multi-Abi)
When executing step "Deploy to Android device"
笔者用实体手机测试,再测试前,需要对手机进行设置.
笔者所用手机为redme note8 pro 5G版.
设置->我的设备->全部参数
找到如下图所示"MIUI版本"连续点击6次,进入开发者模式.
然后点击设置->更多设置->开发者选项
授权以下三项.
然后用USB线将手机连接至电脑,此时手机端会弹出下图提示,选择"传输文件"
设置好之后将手机通过USB连接电脑,正常的话电脑能识别到手机设备,在QT中将设备设置为手机,确认手机状态为Ready to use
可以看到手机图标右下角变成了绿色,然后点击三角形编译
如果手机图标右下角是黄色,状态为connected,
点击下图的Refresh即可变成绿色
编译后会自动安装QGC到手机,如果编译后出现下面的提示,原因是手机上已经安装了其他版本的QGC,可以卸载后再重新编译安装即可。
编译过程中如果出现下面提示,选是即可
如果想在带安卓系统的遥控器上安装地面站,设置方法和手机相似,以云卓H16遥控器为例,打开设置->开发者选项->使能USB调试
选择USB配置为MTP
设置完成后电脑就可以识别到遥控器,选择遥控设备后就可以编译。
QGC版本:4.2.8
QGC有预定义的自定义风格。
使用自定义编译也比较简单,之前笔者也测试过
不过最近在使用自定义编译时,出现了mavlink头文件没有的错,猜测原因是m
avlink库方言从ardupilot变成了common,导致这个消息找不到。
于是将这个消息添加到common中,然后用mavgen生成C语言库,替换掉原来的common文件夹,然后再relase编译就可以了。
编译出来的效果如下:
报错
解决办法:按照提示设置ABIs报错
第一次编译出现许多无法下载的错误
解决办法:联网再编译
如果编译debug的时候正常,编译release的时候报错没有签名
生成签名密钥。您可以使用 JDK 工具生成签名密钥
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
执行后输入密码等信息,会在当前目录生成一个my-release-key.jks文件
签名 APK 文件。使用以下命令对生成的 APK 文件进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks app/build/outputs/apk/release/app-release-unsigned.apk my-alias
请将上述命令中的路径和别名替换为您自己的值。
其中,my-release-key.keystore 是您的密钥库文件名,my_application.apk 是您要签名的 APK 文件名(编译后生成的apk),alias_name 是您在密钥库中使用的别名。
以上面的apk文件为例,我在上面的目录下执行
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks android-build-release-unsigned.apk my-alias
别名可以通过下面的命令查看
keytool -list -v -keystore my-release-key.jks
对 APK 文件进行对齐。使用以下命令对已签名的 APK 文件进行对齐
zipalign -v 4 android-build-release-unsigned.apk qgc.apk
对齐后会生成qgc.apk文件,这个apk就是可以安装的
如果提示没有安装zipalign
可以用下面的命令安装
sudo apt install zipalign
如果报依赖的错误,执行下面命令解决
sudo apt update
sudo apt --fix-broken install
sudo apt autoremove
然后再安装
如果编译安卓QGC时出现下面的报错:
其可能是由于上面配置的jdk版本不对,检查jdk路径,看是否是1.11.0版本,如果选择1.11.0版本有下面的报错,不用管,编译时虽然会报两个错,但不影响编译,可以忽略报错