java.lang.UnsatisfiedLinkError beim Laden der nativen Bibliothek in Android 5.0 [duplizieren]
Diese Frage hat hier bereits eine Antwort:
UnsatisfiedLinkError auf Android 5.0 Lollipop 1 AntwortIch lade meine native Bibliothek von:
try {
System.loadLibrary("myNative");
} catch (UnsatisfiedLinkError e) {
//java.lang.UnsatisfiedLinkError here
System.load("/data/data/com.my.app/app_native/libmyNative.so");
}
Der obige Code wird schließlich in eine Jar-Datei gepackt.
In einem anderen Projekt lade ich das obige Jar mit DexClassLoader:
DexClassLoader dexClassLoader = new DexClassLoader(jarPath,
optJarPath,
getDir("native", Context.MODE_PRIVATE),
getClassLoader());
Beachten Sie, dass bei der Konstruktion diesesdexClassLoader
Instanz, ich habe das @ angegebPfa wo sich der native Code befindet, das istgetDir("native", Context.MODE_PRIVATE)
.
(Ich benutzeNDK release 10, um die native Bibliothek zu generieren. Wenn die native Codedatei libmyNative.so wird generiert, mein Java-Code (der in das endgültige Jar gepackt wurde) überprüft den Typ der CPU-Architektur und kopiert den richtigen nachgetDir("native", Context.MODE_PRIVATE)
.)
Der obige Code funktioniert auch auf anderen Geräten außer Android 5.0 Lollipop. Wenn läuft aufAndroid 5.0 Lollipop Gerät bekomme ich ständig folgende Fehlermeldung:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.my.app/app_native/libmyNative.so" is 32-bit instead of 64-bit
at java.lang.Runtime.load(Runtime.java:331)
at java.lang.System.load(System.java:982)
Wie kann man dieses Problem lösen?