UnsatisfiedLinkError when installing app from Google Play

Q:

We are using PDFTron with Android and all works fine. But With Google Play Apps we see that some devices can’t load the library, and Java throws an exception:

  • Couldn’t load PDFNetC from loader dalvik.system.PathClassLoader[dexPath=/data/app/[…]-1.apk,libraryPath=/data/app-lib/[…]-1]: findLibrary returned null
  • Couldn’t load PDFNetC from loader dalvik.system.PathClassLoader[dexPath=/data/app/[…]-2.apk,libraryPath=/data/app-lib/[…]-2]: findLibrary returned null

I don’t know if “-1” or “-2” has some effect (there was an update?)

The devices where the problem occurs are:
· Samsung GT P5210
· Samsung GT P5200
· Asus EEEPC

We are using libPDFNetC-v7a.so (v6).

A:

The devices where the problem occurs have Intel processors (x86 architecture). If you are shipping your app with only libPDFNetC-v7a.so then the exception makes sense, since it will not find the x86 variant of the libraries. What we recommend in this case is to:

  • ship an apk with all three architectures (this will make your apk bigger in size, but should work right away in arm, armv7 and x86 devices).
  • create separate apks where each one uses only one .so file, and manage them through Google Multiple APK support in Google Play.

Please check these links for more information:
https://groups.google.com/d/msg/pdfnet-sdk/MzDwhWq2Y_g/aT3XERQ6u-gJ

https://groups.google.com/d/msg/pdfnet-sdk/P7WENbAaasI/hZyhdCI4pzYJ