-
Bug
-
Resolution: Fixed
-
P3: Somewhat important
-
5.12.4, 5.13.0
-
None
-
Android 5.1 arm64-v8a
Starting August 1, 2019 all new google play apps and app updates are required to provide 64-bit versions of any 32-bit native code they provide. But qml application cannot load plugin library on android platform for arm64-v8a build. This bug can be reproduced almost in any qt example.
My test with the gallery example (Qt 5.12.4 arm64-v8a android 5.1):
W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: unused DT entry: type 0x6ffffffe arg 0xb38 W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick.2/libqtquick2plugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: unused DT entry: type 0x6ffffffe arg 0x3548 W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Layouts/libqquicklayoutsplugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: unused DT entry: type 0x6ffffffe arg 0x6418 W/linker (24395): /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/Gallery (24395): QQmlApplicationEngine failed to load component W/Gallery (24395): qrc:/gallery.qml:54 plugin cannot be loaded for module "QtQuick.Controls.Material": Cannot load library /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin.so: (dlopen failed: library name "/data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin.so" too long)
But with armeabi-v7a it works fine (same device Qt 5.12.4 armeabi-v7a android 5.1):
W/linker ( 6094): libqtquick2plugin.so: unused DT entry: type 0x6ffffffe arg 0x9fc W/linker ( 6094): libqtquick2plugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqquicklayoutsplugin.so: unused DT entry: type 0x6ffffffe arg 0x30f4 W/linker ( 6094): libqquicklayoutsplugin.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqtquickcontrols2plugin.so: unused DT entry: type 0x6ffffffe arg 0x5a50 W/linker ( 6094): libqtquickcontrols2plugin.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqtquickcontrols2materialstyleplugin.so: unused DT entry: type 0x6ffffffe arg 0x3ab8 W/linker ( 6094): libqtquickcontrols2materialstyleplugin.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqtquickcontrols2universalstyleplugin.so: unused DT entry: type 0x6ffffffe arg 0x373c W/linker ( 6094): libqtquickcontrols2universalstyleplugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqmlsettingsplugin.so: unused DT entry: type 0x6ffffffe arg 0x1d70 W/linker ( 6094): libqmlsettingsplugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqtquicktemplates2plugin.so: unused DT entry: type 0x6ffffffe arg 0x10bd0 W/linker ( 6094): libqtquicktemplates2plugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libwindowplugin.so: unused DT entry: type 0x6ffffffe arg 0x9ec W/linker ( 6094): libwindowplugin.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqgif.so: unused DT entry: type 0x6ffffffe arg 0x1224 W/linker ( 6094): libqgif.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqicns.so: unused DT entry: type 0x6ffffffe arg 0x1a70 W/linker ( 6094): libqicns.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqico.so: unused DT entry: type 0x6ffffffe arg 0x1644 W/linker ( 6094): libqico.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqjpeg.so: unused DT entry: type 0x6ffffffe arg 0x2248 W/linker ( 6094): libqjpeg.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqtga.so: unused DT entry: type 0x6ffffffe arg 0x10ac W/linker ( 6094): libqtga.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqtiff.so: unused DT entry: type 0x6ffffffe arg 0x1ccc W/linker ( 6094): libqtiff.so: unused DT entry: type 0x6fffffff arg 0x2 W/linker ( 6094): libqwbmp.so: unused DT entry: type 0x6ffffffe arg 0x1254 W/linker ( 6094): libqwbmp.so: unused DT entry: type 0x6fffffff arg 0x1 W/linker ( 6094): libqwebp.so: unused DT entry: type 0x6ffffffe arg 0x2fd0 W/linker ( 6094): libqwebp.so: unused DT entry: type 0x6fffffff arg 0x3 D/MALI ( 6094): eglCreateContext:206: [MALI] eglCreateContext display 0xf4623300, share context 0x0 here. ... app works on device
As I see QQmlImport uses different plugin library path for arm64-v8a build. It's looks like /data/data/org.qtproject.example.gallery/qt-reserved-files/qml/QtQuick/Controls.2/Material/libqtquickcontrols2materialstyleplugin.so insted of libqtquickcontrols2materialstyleplugin.so for armeabi-v7a builded version. I think, it's a problem for android devices before 6.0 (Because they have a limit 128 chars for linker path.)