Can Poyrazoğlu Can Poyrazoğlu - 11 days ago 5
Android Question

Android Fabric distributed debug build: java.lang.UnsatisfiedLinkError

I've got some native code in my Android app that works perfectly on my device (Samsung Galaxy S3). I've create a debug built and signed it, sent the APK to my friend for testing. The app launched on his device (Sony Xperia Z3 Compact), and upon the first call to the native component, it crashed. in Fabric, I see the following stack trace:

Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memclr" referenced by "/data/app/com.myapp.myapp-1/lib/arm/libmyAppNative.so"...
at java.lang.Runtime.loadLibrary(Runtime.java:372)
at java.lang.System.loadLibrary(System.java:1076)
at com.myapp.system.Native.<clinit>(Native.java:9)
...


Why would the native components fail to run on his device from the same flavor (debug) on Fabric, while it runs perfectly on my device?

Answer

It was partly due to the linked issue at Error loading package (JNI) - cannot locate symbol "__aeabi_memcpy".

The answer there says that the problem only occurs with SDK version 24, which is incorrect in my case. The problem is still persistent with SDK version 25.

I've solved the issue by reverting back to SDK version 23. However, this issue is still not fixed and it's a problem with Google's side to fix it as soon as possible.