• ubuntu20.04搭建QGC4.2编译环境


    前言

    Ubuntu20.04
    QGC 4.2
    ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。

    视频教程:

    6.1、QGC编译环境安装(ubuntu

    一、安装qt

    推荐使用在线安装,下载地址: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 
    
    • 1

    出现下面的报错:

    ./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
    
    • 1

    执行完之后就可以打开安装程序,然后一直下一步。直到下面这页面,选择需要安装的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)

    二、编译QGC

    安装依赖

    sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev patchelf
    
    • 1

    安装GStreamer

    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 
    
    • 1
    • 2
    • 3
    • 4

    编译安卓地面站需要下载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
    
    • 1
    • 2

    上面这两条命令后需要重启电脑,重启之后地面站才能连接飞控

    三、编译安卓版QGC

    安装jdk11

    笔者曾使用jdk18,编译会报错,这里建议安装jdk11

    sudo apt-get install openjdk-11-jdk
    
    • 1

    配置Qt creator

    点击工具->外部->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"
    
    • 1
    • 2
    • 3

    笔者用实体手机测试,再测试前,需要对手机进行设置.
    笔者所用手机为redme note8 pro 5G版.
    设置->我的设备->全部参数
    找到如下图所示"MIUI版本"连续点击6次,进入开发者模式.
    在这里插入图片描述
    然后点击设置->更多设置->开发者选项
    授权以下三项.
    在这里插入图片描述
    然后用USB线将手机连接至电脑,此时手机端会弹出下图提示,选择"传输文件"
    在这里插入图片描述
    设置好之后将手机通过USB连接电脑,正常的话电脑能识别到手机设备,在QT中将设备设置为手机,确认手机状态为Ready to use
    请添加图片描述可以看到手机图标右下角变成了绿色,然后点击三角形编译
    请添加图片描述
    如果手机图标右下角是黄色,状态为connected,
    在这里插入图片描述
    点击下图的Refresh即可变成绿色
    在这里插入图片描述
    编译后会自动安装QGC到手机,如果编译后出现下面的提示,原因是手机上已经安装了其他版本的QGC,可以卸载后再重新编译安装即可。
    请添加图片描述
    编译过程中如果出现下面提示,选是即可
    在这里插入图片描述

    配置遥控器

    如果想在带安卓系统的遥控器上安装地面站,设置方法和手机相似,以云卓H16遥控器为例,打开设置->开发者选项->使能USB调试
    在这里插入图片描述
    选择USB配置为MTP
    在这里插入图片描述
    设置完成后电脑就可以识别到遥控器,选择遥控设备后就可以编译。
    在这里插入图片描述

    四、QGC自定义编译

    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
    
    • 1

    执行后输入密码等信息,会在当前目录生成一个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
    
    • 1

    请将上述命令中的路径和别名替换为您自己的值。

    其中,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
    
    • 1

    别名可以通过下面的命令查看

     keytool -list -v -keystore my-release-key.jks
    
    • 1

    请添加图片描述
    对 APK 文件进行对齐。使用以下命令对已签名的 APK 文件进行对齐

    zipalign -v 4 android-build-release-unsigned.apk qgc.apk
    
    • 1

    对齐后会生成qgc.apk文件,这个apk就是可以安装的

    如果提示没有安装zipalign
    可以用下面的命令安装

    sudo apt install zipalign
    
    • 1

    如果报依赖的错误,执行下面命令解决

    sudo apt update
    sudo apt --fix-broken install
    sudo apt autoremove
    
    • 1
    • 2
    • 3

    然后再安装

    如果编译安卓QGC时出现下面的报错:
    在这里插入图片描述
    其可能是由于上面配置的jdk版本不对,检查jdk路径,看是否是1.11.0版本,如果选择1.11.0版本有下面的报错,不用管,编译时虽然会报两个错,但不影响编译,可以忽略报错

    在这里插入图片描述

  • 相关阅读:
    超纯水制备抛光树脂及填装要求
    CSS 3之美化表格样式(二)
    数据结构笔记 4 树和二叉树
    第五届“强网”拟态防御国际精英挑战赛——特邀战队篇
    JavaScript(Array,String,window对象)入门
    python大学生生活信息交互平台的设计与实现毕业设计-附源码031315
    从pdb源码到frame帧对象
    第13章 并发编程高阶(一)
    直播高配服务器怎么挑选
    rabbitmq详解
  • 原文地址:https://blog.csdn.net/qq_38768959/article/details/126636417