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
Forum Updated to NodeBB v4.3 + New Features

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

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
3 Posts 2 Posters 588 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