Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ReLinker fails to find dependencies recursively on Android-16 #77

Open
ViliusSutkus89 opened this issue Dec 23, 2020 · 1 comment
Open

Comments

@ViliusSutkus89
Copy link

Hello team, thanks for the project!

Trying to use it but can't seem to get it working on older Android devices.

I've put together a trivial test case to illustrate my issue.
It's an Android JNI project with min SDK set to 16 and Android STL set to "c++_shared".
Shared STL implies that my native library depends on libc++_shared.so.

I load my native library using:

ReLinker.recursively().log(logcatLogger).loadLibrary(getApplicationContext(), "native-lib");

Here's the output from logcat:

12-24 00:00:43.912 14207-14207/? D/---ReLinker: Beginning load of native-lib...
12-24 00:00:43.912 14207-14207/? D/---ReLinker: Loading the library normally failed: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]:  1124 could not load needed library 'libc++_shared.so' for 'libnative-lib.so' (load_library[1093]: Library 'libc++_shared.so' not found)
        at java.lang.Runtime.loadLibrary(Runtime.java:370)
        at java.lang.System.loadLibrary(System.java:535)
        at com.getkeepsafe.relinker.SystemLibraryLoader.loadLibrary(SystemLibraryLoader.java:24)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:163)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:92)
        at com.viliussutkus89.relinkersharedstl.MainActivity.onCreate(MainActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:5008)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
        at android.app.ActivityThread.access$600(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
12-24 00:00:43.912 14207-14207/? D/---ReLinker: native-lib (null) was not loaded normally, re-linking...
12-24 00:00:43.912 14207-14207/? D/---ReLinker: Beginning load of log...
12-24 00:00:43.912 14207-14207/? D/---ReLinker: log (null) was loaded normally!
12-24 00:00:43.912 14207-14207/? D/---ReLinker: Beginning load of m...
12-24 00:00:43.912 14207-14207/? D/---ReLinker: m (null) was loaded normally!
12-24 00:00:43.912 14207-14207/? D/---ReLinker: Beginning load of c++_shared...
12-24 00:00:43.912 14207-14207/com.viliussutkus89.relinkersharedstl D/---ReLinker: c++_shared (null) was loaded normally!
12-24 00:00:43.912 14207-14207/com.viliussutkus89.relinkersharedstl D/---ReLinker: Beginning load of dl...
12-24 00:00:43.912 14207-14207/com.viliussutkus89.relinkersharedstl D/---ReLinker: dl (null) was loaded normally!
12-24 00:00:43.912 14207-14207/com.viliussutkus89.relinkersharedstl D/---ReLinker: Beginning load of c...
12-24 00:00:43.912 14207-14207/com.viliussutkus89.relinkersharedstl D/---ReLinker: c (null) was loaded normally!

It works nicely if I load libc++_shared.so beforehand either manually by System.loadLibrary or using ReLinker, but that kind of defeats the purpose.

Failure happens on "system-images;android-16;default;x86" emulator image.
Works nicely on real (non-emulator) Android-25 device.

Let me know if I'm missing something obvious.

Thanks,
Vilius

@BigSquirrel2000
Copy link

Hi, any update on this issue? Related: gradle/gradle#23023

ViliusSutkus89 added a commit to opendocument-app/pdf2htmlEX-Android that referenced this issue Dec 27, 2023
Assuming Lollipop isn't affected by it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants