Skip to content

JNI libraries with dependencies are broken #335

@mrdomino

Description

@mrdomino

On mrdomino/bazel/android-lib-deps, the example app installs successfully but dies with an UnsatisfiedLinkError when it is run, e.g.:

V/Bazel   (17203): Hello, Android
V/Bazel   (17203): Lib says: Hello Lib
D/dalvikvm(17203): Trying to load lib /data/data/bazel.android/lib/libjni_dep.so 0x42628768
D/dalvikvm(17203): Added shared lib /data/data/bazel.android/lib/libjni_dep.so 0x42628768
D/dalvikvm(17203): No JNI_OnLoad found in /data/data/bazel.android/lib/libjni_dep.so 0x42628768, skipping init
D/dalvikvm(17203): Trying to load lib /data/data/bazel.android/lib/libjni.so 0x42628768
E/dalvikvm(17203): dlopen("/data/data/bazel.android/lib/libjni.so") failed: dlopen failed: cannot locate symbol "_Z15NewStringLatin1P7_JNIEnvPKc" referenced by "libjni.so"...
D/AndroidRuntime(17203): Shutting down VM
W/dalvikvm(17203): threadid=1: thread exiting with uncaught exception (group=0x41d23c08)
E/AndroidRuntime(17203): FATAL EXCEPTION: main
E/AndroidRuntime(17203): Process: bazel.android, PID: 17203
E/AndroidRuntime(17203): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Z15NewStringLatin1P7_JNIEnvPKc" referenced by "libjni.so"...
E/AndroidRuntime(17203):    at java.lang.Runtime.loadLibrary(Runtime.java:365)
E/AndroidRuntime(17203):    at java.lang.System.loadLibrary(System.java:526)
E/AndroidRuntime(17203):    at bazel.MainActivity.onCreate(MainActivity.java:18)
E/AndroidRuntime(17203):    at android.app.Activity.performCreate(Activity.java:5451)
E/AndroidRuntime(17203):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
E/AndroidRuntime(17203):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
E/AndroidRuntime(17203):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
E/AndroidRuntime(17203):    at android.app.ActivityThread.access$900(ActivityThread.java:175)
E/AndroidRuntime(17203):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
E/AndroidRuntime(17203):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(17203):    at android.os.Looper.loop(Looper.java:146)
E/AndroidRuntime(17203):    at android.app.ActivityThread.main(ActivityThread.java:5602)
E/AndroidRuntime(17203):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(17203):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(17203):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
E/AndroidRuntime(17203):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
E/AndroidRuntime(17203):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 2435):   Force finishing activity bazel.android/bazel.MainActivity

Note that in that stack trace, libjni_dep.so is loaded separately prior to loading libjni.so (i.e. it comes from the tip of the branch), but the same error occurs if libjni_dep.so is not explicitly loaded. As far as I can tell, all libraries are successfully compiled and copied to the device.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions