I have a library loaded like this:
static { System.loadLibrary("myLibrary"); } This works fine on most devices. On one device, however, it causes a crash with this stacktrace:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/vendor/overlay/myBuild.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "myLibrary.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:989) at com.sony.foo.bar.<clinit>(myClass.java:20) The accepted answer here prompted me to try adding a copy of myLibrary to a new armeabi-v7 folder, where the original library was in a folder named armeabi. This fixed the crash.
I am trying to make sense out of this. Does this mean the crashing phone has a different CPU? A CPU-identifier app identifies it as having the same type (maker, model) as the others. Even supposing the crashing phone is armeabi-v7, the most upvoted answer here and the accepted answers here and here make it sound like an armeabi-v7 phone should be able to use the library in the armeabi folder. Is this not the case?
Lastly, is there some better approach to this fix so that I don't have two identical copies of the same library in the apk?