UnsatisfiedLinkError android


#1

We’ve ran into a weird issue where all of our devices successfully load fmod as well as all the devices in the google play console prelaunch test, but certain devices in the google testing center are failing with "Fatal Exception: java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.myco.myapp-1/base.apk”],nativeLibraryDirectories=[/data/app/com.myco.myapp-1/lib/arm, /vendor/lib, /system/lib]]] couldn’t find “libfmod.so”. This error occurs at the start of our app when the system.loadlibrary call is made. I know that we have included the fmod lib for arm64-v8a, armeabi-v7a, and x86, which are the only three options in our gradle file. And when I download the apk from google for various abi slices the library exists where it is supposed to. The devices that crash all belong to the arm families that are part of our abi filter as well. What I don’t understand is why these devices are looking in /lib/arm instead of /lib/armeabi-v7a or why on 64 bit devices the error reads /lib/arm64 instead of arm64-v8a. Any insight is appreaciated, thanks.


#2

whats really interesting is that on my samsung device if I call system.loadlibrary with a invalid library name it spits out the same message except it shows the search path as lib/arm64 as well as lib/arm64-v8a (which is where the fmod lib is located).


#3

Is it possible the device is looking for the older “armeabi” ABI?


#4

I had thought about this as a possibility. I can try and include it in the next build however in the docs (https://developer.android.com/ndk/guides/abis) lists classic arm abi as depricated and removed.

I really don’t think this is the issue though as I’ve been seeing the crash even on 64-bit devices, and of course every device we have access to does not have the issue. Plus the 8 or so devices google tests on seem to be fine. The apks from the store are all thinned by google play to include only the correct target abi for the device. I’ve downloaded the apks from the play store for the affected devices and they seem to contain the correct abi for the device.

Here is what the error looks like…
error example:
Fatal Exception: java.lang.UnsatisfiedLinkError

dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/the.app.id-==/base.apk”],nativeLibraryDirectories=[/data/app/the.app.id-==/lib/arm64, /system/lib64, /vendor/lib64]]] couldn’t find “libfmod.so”

Thanks for the advice.


#5

Seeing the arm64 linker error seems to rule out the possibility it’s “armeabi”.

Unfortunately I don’t have much else to go on, none of our devices exhibit this issue.
It feels like something going wrong internally with deployment, I wonder if reaching out to Google would help here?


#6

I’m in the process of doing that. Anything I find out will be posted back to here. Thanks.