QGroundControl v5.0 Stable has been released:
- Install from 5.0 docs: Download and Install | QGC Guide (master)
- Release Notes: Release QGroundControl V5.0 - Stable · mavlink/qgroundcontrol · GitHub
QGroundControl v5.0 Stable has been released:
That’s awesome, thanks for all the hard work and i looking forward to trying it out! Do you know if 5.0 works natively on a Herelink, or do I need to wait for a 5.0 port to show up in this repo here: GitHub - CubePilot/qgroundcontrol-herelink
Thanks!
Not sure if the CubePilot folks are keeping things up to date. But I have my own which I keep up to date myself: GitHub - DonLakeFlyer/Herelink-QGC. It’s up to date with 5.0. It only supports a single camera though. You need to grab the APK artifacts from the GitHub Actions.
Hello sir,
I’m new to Qt and QGroundControl, so I’m not sure how to fix this Android build issue. I’ve successfully built the new stable version of QGroundControl (v5.0) using Qt Creator 6.8.3 on desktop, and it’s working fine.
I’ve also installed GStreamer 1.22.12 for desktop. However, when I try to build QGroundControl for Android, I’m getting an error related to GStreamer.Could you please help me resolve it?
Thanks in advance!
Post the exact error message. We can not guess it.
Thank you for responding . Sorry about that—here’s the full error message in text format:
10:35:05: Initializing deployment to Android device/simulator
10:35:05: Deploying to 13742333890007N
10:35:05: Running steps for project QGroundControl…
10:35:05: Starting: “C:\Program Files\CMake\bin\cmake.exe” --build D:/qgc/qgroundcontrol/build/Android_Qt_6_8_3_Clang_armeabi_v7a-Release --target all
[1/2 0.0/sec] Linking CXX shared module Release\libQGroundControl_armeabi-v7a.so
FAILED: Release/libQGroundControl_armeabi-v7a.so
C:\Windows\system32\cmd.exe /C “cd . && C:\Users\anusha_bylla\AppData\Local\Android\Sdk\ndk\26.1.10909125\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi23 --sysroot=C:/Users/anusha_bylla/AppData/Local/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fexceptions -frtti -stdlib=libc++ -O3 -DNDEBUG -Wl,–build-id=sha1 -Wl,–no-rosegment -Wl,–no-undefined-version -Wl,–fatal-warnings -Wl,–gc-sections -Qunused-arguments -Wl,–no-undefined -Wl,-Bsymbolic -Wl,-z,notext -shared -o Release\libQGroundControl_armeabi-v7a.so @CMakeFiles\QGroundControl.rsp && cd .”
ld.lld: error: undefined symbol: gst_proxy_control_binding_new
referenced by gstglvideomixer.c:439 (/home/nirbheek/projects/repos/cerbero.git/1.22/build/sources/android_universal/armv7/gst-plugins-base-1.0-1.22.12/_builddir/../ext/gl/gstglvideomixer.c:439)
gstglvideomixer.c.o:(_create_video_mixer_input) in archive cpm_modules/gstreamer/e8c30675f9e5398db84aa8cdc909f466ba7e8458/armv7/lib/gstreamer-1.0/libgstopengl.a
referenced by gstglsinkbin.c:267 (/home/nirbheek/projects/repos/cerbero.git/1.22/build/sources/android_universal/armv7/gst-plugins-base-1.0-1.22.12/_builddir/../ext/gl/gstglsinkbin.c:267)
gstglsinkbin.c.o:(gst_gl_sink_bin_init) in archive cpm_modules/gstreamer/e8c30675f9e5398db84aa8cdc909f466ba7e8458/armv7/lib/gstreamer-1.0/libgstopengl.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
10:35:47: The process “C:\Program Files\CMake\bin\cmake.exe” exited with code 1.
10:35:47: Error while building/deploying project QGroundControl (kit: Android Qt 6.8.3 Clang armeabi-v7a)
10:35:47: When executing step “Build”
10:35:47: Elapsed time: 00:42.
hello sir, Thank you for responding . Sorry about that—here’s the full error message in text format:
10:35:05: Initializing deployment to Android device/simulator
10:35:05: Deploying to 13742333890007N
10:35:05: Running steps for project QGroundControl…
10:35:05: Starting: “C:\Program Files\CMake\bin\cmake.exe” --build D:/qgc/qgroundcontrol/build/Android_Qt_6_8_3_Clang_armeabi_v7a-Release --target all
[1/2 0.0/sec] Linking CXX shared module Release\libQGroundControl_armeabi-v7a.so
FAILED: Release/libQGroundControl_armeabi-v7a.so
C:\Windows\system32\cmd.exe /C “cd . && C:\Users\anusha_bylla\AppData\Local\Android\Sdk\ndk\26.1.10909125\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi23 --sysroot=C:/Users/anusha_bylla/AppData/Local/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fexceptions -frtti -stdlib=libc++ -O3 -DNDEBUG -Wl,–build-id=sha1 -Wl,–no-rosegment -Wl,–no-undefined-version -Wl,–fatal-warnings -Wl,–gc-sections -Qunused-arguments -Wl,–no-undefined -Wl,-Bsymbolic -Wl,-z,notext -shared -o Release\libQGroundControl_armeabi-v7a.so @CMakeFiles\QGroundControl.rsp && cd .”
ld.lld: error: undefined symbol: gst_proxy_control_binding_new
referenced by gstglvideomixer.c:439 (/home/nirbheek/projects/repos/cerbero.git/1.22/build/sources/android_universal/armv7/gst-plugins-base-1.0-1.22.12/_builddir/../ext/gl/gstglvideomixer.c:439)
gstglvideomixer.c.o:(_create_video_mixer_input) in archive cpm_modules/gstreamer/e8c30675f9e5398db84aa8cdc909f466ba7e8458/armv7/lib/gstreamer-1.0/libgstopengl.a
referenced by gstglsinkbin.c:267 (/home/nirbheek/projects/repos/cerbero.git/1.22/build/sources/android_universal/armv7/gst-plugins-base-1.0-1.22.12/_builddir/../ext/gl/gstglsinkbin.c:267)
gstglsinkbin.c.o:(gst_gl_sink_bin_init) in archive cpm_modules/gstreamer/e8c30675f9e5398db84aa8cdc909f466ba7e8458/armv7/lib/gstreamer-1.0/libgstopengl.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
10:35:47: The process “C:\Program Files\CMake\bin\cmake.exe” exited with code 1.
10:35:47: Error while building/deploying project QGroundControl (kit: Android Qt 6.8.3 Clang armeabi-v7a)
10:35:47: When executing step “Build”
10:35:47: Elapsed time: 00:42.
Loosely, the linker can’t seem to find gstreamer libraries at link time (or else there’s a library mismatch) so make sure you’ve installed all of the dependencies per QGC Build docs
For Android builds:
Gstreamer will be downloaded during the configuration stage. → Important you have a working internet connection.
It will pick a suitable version based on your Kit setup.
Hi,
Thank you for your response. I’m new to QGC and Qt, so I just want to make sure I understand everything correctly.
When you said “make sure you’ve installed all of the dependencies per QGC build docs”, does that mean I need to manually install GStreamer for Android? Or is it automatically handled during the build?
I’m getting a linker error related to gst_proxy_control_binding_new, and I’m not sure if it’s because of a missing library or if that function isn’t supported on Android.
Thanks a lot for your help!
Hi,
Thank you for your response.
Just to confirm — that means I don’t need to install GStreamer manually, right? As long as my internet is working and I haven’t changed any paths, the build system will take care of it?
I’m asking because I was getting a linker error (gst_proxy_control_binding_new), and I wasn’t sure if it was related to a missing library or if that function just isn’t supported on Android.
I’m new to QGC and Qt, so I appreciate your patience!
Sounds like you are missing some additional files.
Have you setup everything as per this guideline:
I am currently running QGroundControl v5.0 (stable release) with Qt 6.8.3.
Previously, I followed the official Qt guide for Android to successfully build and install the stable QGC v4.4 version with Qt 5.15.2 for both Android and Windows desktop.
However, since that version does not include the 3D View, I am now testing the newer QGC v5.0 stable release with Qt 6.8.3 to check if 3D View is supported.
I initially encountered multiple undefined symbol linker errors related to graphene, jpeg, and libpng while building QGroundControl.
To address this, I downloaded the required graphene and libpng libraries as ZIP files, extracted them, and manually added their include and lib directories to the CMakeLists.txt file. I also linked the static libraries (graphene-1.0, jpeg, and libpng.a) using target_link_libraries().
Could you please confirm if these manual changes are the reason I’m now experiencing the current linker errors? I suspect the issue might be related to architecture or compatibility mismatches.
I have recently installed the latest 5.0 version on my mobile (android 15 – Moto Edge Neo 50) and after that I cannot transfer the telemetry files to my computer (Windows 11). I can move then to folders like Download or Document, but nothing is working: USB cable, sharing over gmail, update to drive, not even adb (android debug bridge). Using adb a message that Permission Access Denied is prompted.
Do you know what part of the build process triggers this?
When you activate a valid Android build Kit, the configuration process starts. - Progress bar in bottom right hand side corner should show up.
During this stage a suitable gstreamer version is being downloaded.
I believe in the build configuration it is possible to set a specific version of gstreamer. - A new version was just released on the 7th.
But I’m not sure how to do this. Haven’t had a need for it.
Hello, I’ve resolved those errors, but there’s one thing — the QGC guide says to install NDK 25, however it automatically installs NDK 26. Could that be the main reason I’m getting issues in the application output?
For the linking error, I studied GStreamer for Android and it was automatically resolved.
E/.qgroundcontro( 1138): Not starting debugger since process cannot load the jdwp agent. Art: Clearing App Profiles failed. D/NetworkSecurityConfig( 1138): Using Network Security Config from resource network_security_config debugBuild: false D/NetworkSecurityConfig( 1138): Using Network Security Config from resource network_security_config debugBuild: false E/libc ( 1138): Access denied finding property “ro.vendor.perf.scroll_opt.heavy_app” D/libMEOW ( 1138): meow reload base cfg path: na D/libMEOW ( 1138): meow reload overlay cfg path: na D/libMEOW ( 1138): applied 1 plugins for [org.mavlink.qgroundcontrol]: D/libMEOW ( 1138): plugin 1: [libMEOW_gift.so]: D/Qt JAVA ( 1138): Not in debug mode! It is not allowed to use extra arguments in non-debug mode. I/QtCore ( 1138): Start I/Qt ( 1138): qt started I/qt.positioning.android( 1138): Positioning start E/linker ( 1138): “/data/app/<del>faNWFpZSbMvg6fH-bEa-qw==/org.mavlink.qgroundcontrol-S-vRWL3mT_4zdEGGdRNS0A==/lib/arm/libQGroundControl_armeabi-v7a.so” has text relocations (******************************************************************************************************************************************* E/AndroidRuntime( 1138): FATAL EXCEPTION: qtMainLoopThread E/AndroidRuntime( 1138): Process: org.mavlink.qgroundcontrol, PID: 1138 E/AndroidRuntime( 1138): java.lang.UnsatisfiedLinkError: dlopen failed: “/data/app/</del>faNWFpZSbMvg6fH-bEa-qw==/org.mavlink.qgroundcontrol-S-vRWL3mT_4zdEGGdRNS0A==/lib/arm/libQGroundControl_armeabi-v7a.so” has text relocations (******************************************************************************************************************************************* E/AndroidRuntime( 1138): at java.lang.Runtime.load0(Runtime.java:939) E/AndroidRuntime( 1138): at java.lang.System.load(System.java:1628) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtLoader.loadLibraryHelper(QtLoader.java:497) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtLoader.lambda$loadMainLibrary$0$org-qtproject-qt-android-QtLoader(QtLoader.java:545) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtLoader$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtThread.lambda$run$0(QtThread.java:57) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtThread$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) E/AndroidRuntime( 1138): at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25) E/AndroidRuntime( 1138): at java.lang.Thread.run(Thread.java:923) I/Process ( 1138): Sending signal. PID: 1138 SIG: 9 Art: Compiled App Profiles. 10:42:33: Android target “org.mavlink.qgroundcontrol” died.
Re. NDK:
You can download required version independently and then move into same folder as the other versions that you already have.
Also when changing NDK versions you’ll have to fully close QT. The restart after a few seconds as it is known to ignore some changes whilst running. I also had it happen that I had disable all selected Android build kits. Restart QT and then activate the desired build kits before QT accepted my changes.
As specified in the CMakeLists.txt file, when using Qt version 6.8.3, the build requires Android NDK version 26.1. If any other NDK version is detected, the build will fail with an error.
cmakelists.txt:
if(${Qt6_VERSION} VERSION_EQUAL 6.6.3)
if(NOT ${CMAKE_ANDROID_NDK_VERSION} VERSION_EQUAL 25.1)
message(FATAL_ERROR “Invalid NDK Version: ${CMAKE_ANDROID_NDK_VERSION}, Use Version 25B instead.”)
endif()
elseif(${Qt6_VERSION} VERSION_EQUAL 6.8.3)
if(NOT ${CMAKE_ANDROID_NDK_VERSION} VERSION_EQUAL 26.1)
message(FATAL_ERROR “Invalid NDK Version: ${CMAKE_ANDROID_NDK_VERSION}, Use Version 26B instead.”)
endif()
endif()