簡體   English   中英

AndroidRuntime引起:java.lang.unsatisfiedLinkError:無法加載tfp_jni:findLibrary返回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項目和偏好設置

Android項目和偏好設置

我已經嘗試了Stackoverflow上類似問題的各種其他答案但沒有成功。 如果您還需要查看其他內容,請告知我們,我會盡快提供其他信息。

新圖片

Imgur

更正! apk位於verify-demo-nolic項目/ bin文件夾中。 Referenced Library tfp_java.jar是SDK庫項目。 您可以從Finder中看到.so文件位於庫中。 這有幫助嗎?

鏈接工作必須要做很多事情

  1. 必須將本機庫編譯為適當ABI的.so文件 - 這通常通過ndk-build腳本/批處理文件完成,但也可以使用生成的獨立工具鏈完成。 IDE項目可能希望將其作為自定義構建步驟進行配置。

  2. 本機庫必須打包在應用程序.apk中。 如果它是從應用程序項目目錄下的jni /文件夾ndk-build ,那么ndk-build可能會將其復制到項目的libs /文件夾的ABI相應子目錄中。 但是,如果本機庫屬於不同的Android庫,則可能需要執行額外的步驟 特別是, 構建系統無法從庫.jar獲取 .so,因此與庫代碼關聯的一個必須通過在客戶端項目的libs /文件夾下顯式復制,或者通過引用庫項目目錄樹找到( 不是一個孤獨的.jar )包括它。

  3. 設備上的安裝程序必須確定.apk中包含的.so文件之一適用於設備的ABI(體系結構),並將其從.apk中復制到安裝目錄中以供使用。

  4. jni函數的運行時鏈接名稱(任何編譯器名稱 - mangling的下游)必須與VM正在查找的名稱相匹配。 通常,這里的問題來自於未正確編碼本機函數名中的java完全限定類名。 javah工具旨在幫助避免此類錯誤,盡管可以手動完成。

這些步驟中的每一步都存在潛在的故障,因此可以通過嘗試找到.so文件丟失的第一階段來調試未滿足的鏈接。

暫無
暫無

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

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