Uso nella mia applicazione una libreria nativa compilata solo per armeabi, armeabi-v7a e x86.Come utilizzare le librerie native a 32 bit su dispositivi Android a 64 bit
Quando questa libreria viene caricata su un dispositivo a 64 bit come il Samsung S6, l'applicazione si blocca con un UnsatisfiedLinkError
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libfoo.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:989)
La libreria è closed source purtroppo. C'è un modo per risolvere questo problema senza ricompilare la libreria con target a 64 bit?
Hai guardato https: // StackOverflow. it/q/27712921/603270 e https://stackoverflow.com/a/29329413/603270? – shkschneider
L'ho fatto. Uno vale per AOSP, l'altro per il caricamento dinamico della classe. Il mio caso è in realtà molto più semplice. Ma ho appena scoperto che un'altra libreria nativa che includo effettivamente fornisce i file .so a 64 bit, quindi c'è una cartella arm64-86 nella mia cartella/lib nell'apk finale. Probabilmente questo è il motivo per cui il sistema presuppone che fornisco i file .so a 64 bit in tutti i casi. Proverò a ricompilare questa libreria con il solo supporto a 32 bit e vedere se funziona. –
Buon pensiero. Fateci sapere (rispondete alla vostra stessa domanda se necessario). – shkschneider