簡體   English   中英

UnsatisfiedLinkError:…:findLibrary返回null

[英]UnsatisfiedLinkError: … :findLibrary returned null

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

我正在嘗試為Ubuntu 12上的Android NDK開發設置基本環境,但無法解決此錯誤。 我的系統已經設置為使用SDK進行常規Android開發。 我已經安裝了Eclipse C / C ++開發工具。

我的.bashrc在底部有以下幾行:

NDK_HOME=~/android-ndk-r9c
export NDK_HOME
export PATH=/home/steve/android-ndk-r9c:${PATH}
export NDK_PATH=/home/steve/android-ndk-r9c

在我的Eclipse屬性中,我在Android-> NDK中的NDK位置設置為/ home / steve / android-ndk-r9c。 我的Android.mk如下所示:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := test
LOCAL_SRC_FILES := example.c

include $(BUILD_SHARED_LIBRARY)

我嘗試在命令行上使用build-ndk。 現在,我的項目目錄中有一個文件obj / local / armeabi / libtest.so,但這對我沒有任何幫助。

就其價值而言,沒有任何項目有效,甚至NDK示例項目(如HelloJni)也無濟於事。 我該怎么做才能編譯基本的JNI應用程序?

編輯:這是在實際設備上。 hello-jni的nd​​k-build輸出為:

[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

加載共享庫的正確方法是

static {
    System.loadLibrary("test");
}

庫名稱取自Android.mk文件的LOCAL_MODULE定義(如果決定使用,則取自Application.mk文件)。 就您而言,您正在命名模塊test ndk-build生成共享庫libtest.so

請注意,您不需要在System.loadLibrary()調用中包括lib-前綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM