Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. UnsatisfiedLinkError from qt5.android.QtNative.loadBundledLibraries on Android Pie
Qt 6.11 is out! See what's new in the release blog

UnsatisfiedLinkError from qt5.android.QtNative.loadBundledLibraries on Android Pie

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
3 Posts 2 Posters 739 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    JImson James
    wrote on last edited by JImson James
    #1

    In newer Android versions, the application is failing to start with UnsatisfiedLinkError exception.
    It looks like the org.qtproject.qt5.android.QtNative.loadBundledLibraries is trying to load the versioned library but is not able to!

    Since my app.shell.ShellActivity.onCreate() is not loading the lib directly (shown below), I dont have any idea how to tackle this lib loading failure.

    public class ShellActivity extends QtActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        if (running) {
            Log.e(TAG, "An instance of this activity is already running!");
            setResult(-2);
            finish();
            System.exit(-2);
            return;
        }
        running = true;
    }
    

    }

    The lib is configured in .pro as shown below,

    app_android: contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
    LIBS += -L$$PWD/lib/android/ -lcrypto -lssl
    ANDROID_EXTRA_LIBS =
    $$PWD/lib/android/libcrypto.so
    $$PWD/lib/android/libssl.so
    }

    CONFIG += app_android
    

    Please note that the application is running fine in other lower android versions, (tested on 4.4, and 5.1) but failing on Android 9.0 (Pie).
    objdump output.
    file format elf32-little
    NEEDED libdl.so
    NEEDED libc.so
    SONAME libcrypto.so

    The stacktrace is as shown below. Any idea how to solve it?

    05-08 14:29:26.513 26065-26065/app.shell W/System: ClassLoader referenced unknown path:
    05-08 14:29:26.704 26065-26065/app.shell W/System.err: java.lang.reflect.InvocationTargetException
    05-08 14:29:26.705 26065-26065/app.shell W/System.err: at java.lang.reflect.Method.invoke(Native Method)
    at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:241)
    at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:676)
    at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183)
    at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266)
    at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273)
    at app.shell.ShellActivity.onCreate(ShellActivity.java:41)
    at android.app.Activity.performCreate(Activity.java:7326)
    at android.app.Activity.performCreate(Activity.java:7317)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    05-08 14:29:26.706 26065-26065/app.shell W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3066)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3229)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:6981)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
    Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libcrypto.so.1.0.0" not found
    at java.lang.Runtime.load0(Runtime.java:928)
    at java.lang.System.load(System.java:1633)
    at org.qtproject.qt5.android.QtNative.loadBundledLibraries(QtNative.java:209)
    at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:599)
    ... 22 more

    1 Reply Last reply
    0
    • J Offline
      J Offline
      jkjyuio
      wrote on last edited by
      #2

      Ive always built my libs without versions, then linked with them directly.

      1 Reply Last reply
      0
      • J Offline
        J Offline
        JImson James
        wrote on last edited by
        #3

        Linking works..
        apk got created...
        App works perfectly in 4.4 (android-19) and 5.1 (android-21).
        But when i tested it on 9.0 (Android Pie), app crashed.

        So I guess org.qtproject.qt5.android.QtNative.loadBundledLibraries has something to do with library loading (versioned and non-versioned) in latest android versions (Atleast I know my app is crashing on Android Pie).

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved