回到我開發一個Android應用程序,包括本地代碼java.lang.UnsatisfiedLinkError中:從JNI_ERR JNI_OnLoad
首先我編譯預建圖書館。該Android.mk文件是project_path/JNI/QT庫/ Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := qt5Core-prebuilt
LOCAL_SRC_FILES := libQt5Core.so
LOCAL_EXPORT_C_INCLUDES += qtbase/include
include $(PREBUILT_SHARED_LIBRARY)
然後我編譯我的書庫,它的Android.mk文件是project_path/JNI /我的庫/ Android系統。 MK:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myLibrary
LOCAL_SRC_FILES := com_example_qtsignaux_Library.cpp
LOCAL_SRC_FILES += Receiver.cpp
LOCAL_SRC_FILES += Emitter.cpp
LOCAL_SRC_FILES += moc_Receiver.cpp
LOCAL_SRC_FILES += moc_Emitter.cpp
LOCAL_SHARED_LIBRARIES := qt5Core-prebuilt
LOCAL_C_INCLUDES += ../qt-library/qtbase/include
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
當我使用NDK,構建腳本編譯JNI文件夾,一切正常撥打電話時,但出現以下錯誤:
static {
System.loadLibrary("myLibrary");
}
java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/com.example.qtsignaux-1/lib/arm/libmyLibrary.so"
通知我解壓的apk的文件夾,每一個libaries:libQt5Core.so,libmyLibrary.so和libgnustl_shared.so是在lib/armeabi /和lib/armeabi-V7A /文件夾
我Application.mk文件看起來像:
APP_ABI += armeabi armeabi-v7a
APP_STL := gnustl_shared
APP_CPPFLAGS := -frtti -fexceptions
我真的不明白什麼是錯誤的手段和系統爲什麼嘗試在application_package_name/lib中/ 手臂文件加載庫。這個文件夾是否真的存在,或者這只是armeabi和armeabi-v7a在我的情況?
在此先感謝您的幫助
正確的jar文件中的錯誤意味着你的庫中定義一個'JNI_OnLoad'功能,並從它返回'JNI_ERR'。如果你沒有定義一個'JNI_OnLoad'函數,那麼你需要找出它被拖入的位置,以及它爲什麼會失敗。 – fadden
嗨fadden謝謝你的回答。我仍然不明白,因爲我的名爲startTest()的libray中只有一個函數, – suns9