Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-77188

Android dlopen failed: library name too long

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3: Somewhat important P3: Somewhat important
    • 5.14
    • 5.12.4, 5.13.0
    • None
    • Android 5.1 arm64-v8a
    • Android

      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.)

        1. QQC2.diff
          0.7 kB
          Kirill Gorshkov
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            assam Assam Boudjelthia
            raymondo Roman Putintsev
            Votes:
            2 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes