![](/img/trans.png)
[英]java.lang.UnsatisfiedLinkError: Couldn't load jni-input: findLibrary returned null
[英]AndroidRuntime Caused by: java.lang.unsatisfiedLinkError: Couldn't load tfp_jni: findLibrary returned null
所以,看起來有很多像我這樣的問題,但不確定它們是否與我的問題有關。 好。 我有一個Android項目,它使用SDK作為引用庫。 SDK包含C ++,所以我使用的是android-ndk-r9庫。 我在Android項目中引用的SDK是一個JNI庫(Oooooo - 可怕的東西)。 哦是的,不要讓我忘記提及armeabi-v7a(這似乎是另一個可怕的主題)。 執行此行時發生錯誤:
System.loadLibrary("tfp_jni");
tfp_jni實際上是我的SDK庫項目的libs文件夾中的armeabi-v7a文件夾下的libtfp_jni.so文件。 該SDK庫項目包含Android.mk文件。 我認為代碼不會進入那里。 但這是.mk文件的內容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tfp-prebuilt
LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libtfp_jni.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
然后在我的Android項目中,我有一個包含Android.mk和Application.mk的jni文件夾。 以下是內容:
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_INSTALL_CAMERA:=off
include $(INNERID_ANDROID_ROOT)/Android.mk
include $(OPENCV_ANDROID_ROOT)/sdk/native/jni/OpenCV.mk
Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-14
環境變量
路徑和符號 - 包括
除源位置和輸出位置(顯示項目文件夾)外,所有其他選項卡均為空。
Android項目和偏好設置
我已經嘗試了Stackoverflow上類似問題的各種其他答案但沒有成功。 如果您還需要查看其他內容,請告知我們,我會盡快提供其他信息。
新圖片
更正! apk位於verify-demo-nolic項目/ bin文件夾中。 Referenced Library tfp_java.jar是SDK庫項目。 您可以從Finder中看到.so文件位於庫中。 這有幫助嗎?
鏈接工作必須要做很多事情
必須將本機庫編譯為適當ABI的.so文件 - 這通常通過ndk-build
腳本/批處理文件完成,但也可以使用生成的獨立工具鏈完成。 IDE項目可能希望將其作為自定義構建步驟進行配置。
本機庫必須打包在應用程序.apk中。 如果它是從應用程序項目目錄下的jni /文件夾ndk-build
,那么ndk-build
可能會將其復制到項目的libs /文件夾的ABI相應子目錄中。 但是,如果本機庫屬於不同的Android庫,則可能需要執行額外的步驟 。 特別是, 構建系統無法從庫.jar獲取 .so,因此與庫代碼關聯的一個必須通過在客戶端項目的libs /文件夾下顯式復制,或者通過引用庫項目目錄樹找到( 不是一個孤獨的.jar )包括它。
設備上的安裝程序必須確定.apk中包含的.so文件之一適用於設備的ABI(體系結構),並將其從.apk中復制到安裝目錄中以供使用。
jni函數的運行時鏈接名稱(任何編譯器名稱 - mangling的下游)必須與VM正在查找的名稱相匹配。 通常,這里的問題來自於未正確編碼本機函數名中的java完全限定類名。 javah
工具旨在幫助避免此類錯誤,盡管可以手動完成。
這些步驟中的每一步都存在潛在的故障,因此可以通過嘗試找到.so文件丟失的第一階段來調試未滿足的鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.