SVG Icons not showing in qgroundcontrol-herelink Android build

Hello,

I am attempting to build a custom version of the qgroundcontrol-herelink application for use on the Herelink. I am able to successfully get it to build for both desktop and Android. However, when I build for the Android and run on a simulator, none of the SVG icons will show:

I am using Android NDK r15c, QT 5.11.0, building for Android 7.1 using API 25, build tools 25.0.2, Java 1.8, Clang. I have tried for both armeabi-v7a and x86.

Application Output:

> 09:42:29: Unexpected run control state RunControlState::Stopped when worker AndroidRunner started.
> I art     : Late-enabling -Xcheck:jni
> W art     : Unexpected CPU variant for X86 using defaults: x86
> W System  : ClassLoader referenced unknown path:
> I QtCore  : Start
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Positioning.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Concurrent.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Network.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Qml.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Gui.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Quick.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5QuickParticles.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Location.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Widgets.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5QuickWidgets.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5OpenGL.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Svg.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Multimedia.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Sql.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Xml.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5TextToSpeech.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5AndroidExtras.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Bluetooth.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Test.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5MultimediaQuick.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5PositioningQuick.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5RemoteObjects.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5Charts.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5QuickTemplates2.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQt5QuickControls2.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/platforms/android/libqtforandroid.so: unsupported flags DT_FLAGS_1=0x81
> I Qt      : qt started
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/bearer/libqandroidbearer.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/position/libqtposition_android.so: unsupported flags DT_FLAGS_1=0x81
> I QtPositioning: Positioning start
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/mediaservice/libqtmedia_android.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/texttospeech/libqttexttospeech_android.so: unsupported flags DT_FLAGS_1=0x81
> I art     : Do partial code cache collection, code=26KB, data=30KB
> I art     : After code cache collection, code=26KB, data=30KB
> I art     : Increasing code cache capacity to 128KB
> I art     : Do partial code cache collection, code=51KB, data=62KB
> I art     : After code cache collection, code=51KB, data=62KB
> I art     : Increasing code cache capacity to 256KB
> D         : HostConnection::get() New Host Connection established 0xa5c83280, tid 7528
> D         : HostConnection::get() New Host Connection established 0xa5c834c0, tid 7551
> I OpenGLRenderer: Initialized EGL, version 1.4
> D OpenGLRenderer: Swap behavior 1
> W OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
> D OpenGLRenderer: Swap behavior 0
> D EGL_emulation: eglCreateContext: 0xb19850c0: maj 3 min 1 rcv 4
> D EGL_emulation: eglMakeCurrent: 0xb19850c0: ver 3 1 (tinfo 0xb19835d0)
> E eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
> E eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
> W linker  : /data/app/org.mavlink.qgroundcontrol-2/lib/x86/libQGroundControl.so: unused DT entry: type 0xf arg 0x134167
> D         : (null):0 ((null)): QML debugging is enabled. Only use this in a safe environment.
> D         : /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/libs/qtandroidserialport/src/qserialport_android.cpp:143 (static void QSerialPortPrivate::setNativeMethods()): AndroidSerialPortLog: Registering Native Functions
> D         : /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/libs/qtandroidserialport/src/qserialport_android.cpp:171 (static void QSerialPortPrivate::setNativeMethods()): AndroidSerialPortLog: Native Functions Registered
> D EGL_emulation: eglMakeCurrent: 0xb19850c0: ver 3 1 (tinfo 0xb19835d0)
> D libQGroundControl.so: /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/src/QGCApplication.cc:184 (QGCApplication::QGCApplication(int&, char**, bool)): System reported locale: QLocale(English, Latin, UnitedStates) "en_US"
> D QGroundControl: /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/src/QGCApplication.cc:277 (QGCApplication::QGCApplication(int&, char**, bool)): Settings location "/data/user/0/org.mavlink.qgroundcontrol/files/.config/QGroundControl.org/QGroundControl.ini" Is writable?: true
> D QGroundControl: /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/src/QGCLoggingCategory.cc:98 (void QGCLoggingCategoryRegister::setFilterRulesFromSettings(const QString&)): Filter rules "*Log.debug=false\n"
> E BluetoothAdapter: Bluetooth binder is null
> E BluetoothAdapter: Bluetooth binder is null
> W QGroundControl: (null):0 ((null)): qt.bluetooth.android: Device does not support Bluetooth
> I TextToSpeech: Sucessfully bound to com.google.android.tts
> W TextToSpeech: setLanguage failed: not bound to TTS engine
> I TextToSpeech: Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
> I TextToSpeech: Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
> W QtTextToSpeech: tts initialized
> D QtPositioning: Regular updates using GPS 50
> D QtPositioning: Looper Thread startup time in ms: 0
> D QGroundControl: /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/src/Vehicle/MAVLinkLogManager.cc:360 (virtual void MAVLinkLogManager::setToolbox(QGCToolbox*)): MAVLinkLogManagerLog: MAVLink logs directory: "/storage/emulated/0/QGroundControl/Logs"
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqico.so: unsupported flags DT_FLAGS_1=0x81
> D QGroundControl: /home/karleaves/wispr-dev/wispr-air/wispr-ground-control/src/QtLocationPlugin/QGCMapEngine.cpp:229 (void QGCMapEngine::init()): Map Cache in: "/data/user/0/org.mavlink.qgroundcontrol/files/QGCMapCache300" / "qgcMapCache.db"
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/sqldrivers/libqsqlite.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Window.2/libwindowplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Dialogs/libdialogplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Controls/libqtquickcontrolsplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtPositioning/libdeclarative_positioning.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtGraphicalEffects/libqtgraphicaleffectsplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtGraphicalEffects/private/libqtgraphicaleffectsprivate.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtLocation/libdeclarative_location.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQml/Models.2/libmodelsplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Dialogs/Private/libdialogsprivateplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/Qt/labs/settings/libqmlsettingsplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtQuick/Controls/Styles/Android/libqtquickcontrolsandroidstyleplugin.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqgif.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqicns.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqjpeg.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqsvg.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqtga.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqtiff.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqwbmp.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/imageformats/libqwebp.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/qml/QtMultimedia/libdeclarative_multimedia.so: unsupported flags DT_FLAGS_1=0x81
> W linker  : /data/data/org.mavlink.qgroundcontrol/qt-reserved-files/plugins/video/videonode/libqtsgvideonode_android.so: unsupported flags DT_FLAGS_1=0x81
> W QtThread: type=1400 audit(0.0:52): avc: denied { ioctl } for path="socket:[70182]" dev="sockfs" ino=70182 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W QtThread: type=1400 audit(0.0:53): avc: denied { ioctl } for path="socket:[70182]" dev="sockfs" ino=70182 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W QtThread: type=1400 audit(0.0:54): avc: denied { ioctl } for path="socket:[70182]" dev="sockfs" ino=70182 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W QtThread: type=1400 audit(0.0:55): avc: denied { ioctl } for path="socket:[70183]" dev="sockfs" ino=70183 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W QtThread: type=1400 audit(0.0:56): avc: denied { ioctl } for path="socket:[70183]" dev="sockfs" ino=70183 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W QtThread: type=1400 audit(0.0:57): avc: denied { ioctl } for path="socket:[70183]" dev="sockfs" ino=70183 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> D         : HostConnection::get() New Host Connection established 0x8c8ffdc0, tid 7549
> D EGL_emulation: eglCreateContext: 0x8da5b080: maj 3 min 1 rcv 4
> D EGL_emulation: eglMakeCurrent: 0x8da5b080: ver 3 1 (tinfo 0x912c95f0)
> E eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
> E eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
> D EGL_emulation: eglMakeCurrent: 0xb19850c0: ver 3 1 (tinfo 0xb19835d0)
> D EGL_emulation: eglMakeCurrent: 0xb19850c0: ver 3 1 (tinfo 0xb19835d0)
> D         : HostConnection::get() New Host Connection established 0x8c97f080, tid 7561
> D EGL_emulation: eglMakeCurrent: 0x8da5b080: ver 3 1 (tinfo 0x8caa3bf0)
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502
> E QGC_QSerialPortInfo: Error from availableDevicesInfo
> W qtMainLoopThrea: type=1400 audit(0.0:58): avc: denied { ioctl } for path="socket:[70188]" dev="sockfs" ino=70188 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W qtMainLoopThrea: type=1400 audit(0.0:59): avc: denied { ioctl } for path="socket:[70188]" dev="sockfs" ino=70188 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> W qtMainLoopThrea: type=1400 audit(0.0:60): avc: denied { ioctl } for path="socket:[70188]" dev="sockfs" ino=70188 ioctlcmd=8927 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:untrusted_app:s0:c512,c768 tclass=tcp_socket permissive=0
> E QGC_QSerialPortInfo: Error from availableDevicesInfo
> E QGC_QSerialPortInfo: Error from availableDevicesInfo
> E QGC_QSerialPortInfo: Error from availableDevicesInfo
> E QGC_QSerialPortInfo: Error from availableDevicesInfo
> E emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glGenerateMipmap:4204 GL error 0x502

I tried to include the compile output but I reached the character limit.

Do you have any ideas what could be causing this issue on Android devices? Most people just recommended adding QT += svg to the .pro file, but this is already in the .pro file and I figure this should work in a fresh clone without any changes unless my environment is set up wrong.

Thanks for any input!

This ended up being an issue with the Android virtual device. I installed on my phone and the icons showed up as expected!