UnsatisfiedLinkError: ... :findLibrary null zurückgegeben
03-01 14:00:53.556: E/AndroidRuntime(27208): java.lang.UnsatisfiedLinkError: Couldn't load
example from loader dalvik.system.PathClassLoader[DexPathList[[zip file
"/data/app/com.example.test-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.test-
2, /vendor/lib, /system/lib]]]: findLibrary returned null
Ich versuche zu bekommen basic-Umgebung einrichten für Android-NDK development auf Ubuntu 12 und ich Schaffe es nicht, diesen Fehler Weg zu gehen. Mein system ist bereits für reguläre Android-Entwicklung mit dem SDK. Ich habe installiert die eclipse C/C++ development tools.
Meine .bashrc hat diese Zeilen am Ende:
NDK_HOME=~/android-ndk-r9c
export NDK_HOME
export PATH=/home/steve/android-ndk-r9c:${PATH}
export NDK_PATH=/home/steve/android-ndk-r9c
In meinem Eclipse-Eigenschaften, meine NDK Lage im Android->NDK /home/steve/android-ndk-r9c. Mein Android.mk sieht wie folgt aus:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := example.c
include $(BUILD_SHARED_LIBRARY)
Versuchte ich mit build-ndk auf der Kommandozeile. Ich habe jetzt in meinem Projekt-Verzeichnis eine Datei obj/local/armeabi/libtest.so, aber es ist nicht dazu mir alle gut.
Für was es Wert ist, kein Projekt funktioniert, auch nicht die NDK-Beispiel-Projekte (wie HelloJni). Was kann ich tun, um zu kompilieren eine grundlegende JNI Anwendung?
EDIT: Das ist auf einem realen Gerät. Die ndk-build-Ausgabe des " hello-jni:
[armeabi-v7a] Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup : libs/armeabi-v7a/gdb.setup
[armeabi] Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
[armeabi] Gdbsetup : libs/armeabi/gdb.setup
[x86] Gdbserver : [x86-4.6] libs/x86/gdbserver
[x86] Gdbsetup : libs/x86/gdb.setup
[mips] Gdbserver : [mipsel-linux-android-4.6] libs/mips/gdbserver
[mips] Gdbsetup : libs/mips/gdb.setup
[armeabi-v7a] Compile thumb : hello-jni <= hello-jni.c
[armeabi-v7a] SharedLibrary : libhello-jni.so
[armeabi-v7a] Install : libhello-jni.so => libs/armeabi-v7a/libhello-jni.so
[armeabi] Compile thumb : hello-jni <= hello-jni.c
[armeabi] SharedLibrary : libhello-jni.so
[armeabi] Install : libhello-jni.so => libs/armeabi/libhello-jni.so
[x86] Compile : hello-jni <= hello-jni.c
[x86] SharedLibrary : libhello-jni.so
[x86] Install : libhello-jni.so => libs/x86/libhello-jni.so
[mips] Compile : hello-jni <= hello-jni.c
[mips] SharedLibrary : libhello-jni.so
[mips] Install : libhello-jni.so => libs/mips/libhello-jni.so
Ich bin auf einem tatsächlichen Gerät.
Komisch. Der Fehler, der Auftritt, aufgrund der Tatsache, dass Sie nicht alle
libtest.so
- Datei in Ihrem libs/ - Verzeichnis. Was ist die Ausgabe des ndk-build
Befehl für die hello-jni
Projekt?03-01 15:10:01.675: E/AndroidRuntime(31807): java.lang.UnsatisfiedLinkError: Konnte nicht geladen hello-jni vom loader dalvik.system.PathClassLoader[DexPathList[[zip-Datei "/data/app/com.example.hellojni-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.hellojni-1, /vendor/lib /system/lib]]]: findLibrary null zurückgegeben
Das ist das Android-log-Ausgabe. Auf Ihrem computer, navigieren Sie zu den hello-jni/jni - Verzeichnis, öffnen Sie eine Konsole gibt, und führen Sie die
ndk-build
Befehl. Dann poste hier die Ausgabe von diesem Befehl.
InformationsquelleAutor Steve Schwarcz | 2014-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg beim laden der gemeinsam genutzten Bibliothek ist
Den Namen der Bibliothek stammt aus der
LOCAL_MODULE
definition von Ihrem Android.mk-Datei (oder aus der Anwendung.mk-Datei, wenn Sie sich entscheiden, es zu benutzen). In Ihrem Fall, Sie benennen Ihre module test. Diendk-build
erzeugt die gemeinsame Bibliotheklibtest.so
.Darauf achten, dass Sie nicht brauchen, um die lib- Präfix in der
System.loadLibrary()
nennen.Froh, dass ich Sie geholfen!
InformationsquelleAutor Sebastiano