Ich verwende eine native Bibliothek in meiner Anwendung, die nur für armeabi, armeabi-v7a und x86 kompiliert wird.So verwenden Sie 32-Bit-native Bibliotheken auf 64-Bit-Android-Geräten
Wenn diese Bibliothek auf einem 64-Bit-Gerät wie die Samsung S6 die Anwendung abstürzt mit einer 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)
Der Bibliothek ist leider geschlossene Quelle geladen wird. Gibt es eine Möglichkeit, das zu beheben, ohne die Bibliothek mit 64-Bitzielen neu zu kompilieren?
Haben Sie unter https sah: // Stackoverflow. com/q/27712921/603270 und https://Stackoverflow.com/a/29329413/603270? – shkschneider
Ich habe. Einer gilt für AOSP, der andere für dynamisches Classloading. Mein Fall ist eigentlich viel einfacher. Aber ich habe gerade entdeckt, dass eine andere native Bibliothek, die ich einschließe, tatsächlich 64-bit .so-Dateien liefert, daher gibt es einen arm64-86-Ordner in meinem/lib-Ordner in der endgültigen apk. Wahrscheinlich geht das System daher davon aus, dass ich in allen Fällen 64-Bit-.so-Dateien zur Verfügung stelle. Ich werde versuchen, diese Bibliothek mit 32-Bit-Unterstützung nur neu zu kompilieren und sehen, ob es funktioniert. –
Gutes Denken. Lassen Sie es uns wissen (beantworten Sie Ihre eigene Frage, falls nötig). – shkschneider