2016-04-01 52 views
1

我有一個Android項目,我加入其中包含幾個的.class文件在另外一些。那麼文件外部.jar文件。本地庫未找到(UnsatisfiedLinkError)

當我嘗試使用由文件提供的一些方法時,我收到一個UnsatisfiedLinkError-Exception,它表示無法找到這些方法的實現。

很明顯,問題在於包含實現的庫文件不能正確加載/找不到。

我該怎麼做才能從運行時找到外部文件的本地庫.jar


更多細節:

我使用AndroidStudio和應用程序是在與設備 「的Nexus 5 API 23 86」 仿真器進行測試。 .so文件也支持x86。

我將.jar文件複製到/app/libs文件夾中。然後,我右鍵單擊IDE中的文件並選擇「添加爲庫」。

enter image description here

+1

請提供證明問題的[mcve]。這將包括'.so'文件支持哪些CPU體系結構的詳細信息,您如何在應用程序中包括這些'.so'文件以及您正在測試的CPU體系結構。 – CommonsWare

+0

我添加了您請求的信息。讓我知道如果我錯過了什麼。 – user32323

+0

你是如何在應用中包含'.so'文件的?他們不在JAR中(如果他們是,那是你的問題)。預編譯的'.so'文件最好作爲AAR的一部分與JAR一起分發,以避免所有這些麻煩。 – CommonsWare

回答

1

正如你看到的那一聲是說,它無法加載本地庫。但爲什麼?

enter image description here

所有我檢查我的結構,如果位置是正確的本地庫.so文件的第一位。

似乎一切都好,除了這個瘋狂的錯誤。

然後經過一番研究,我發現一些android設備有64位處理器。

此設備會生成並檢查arm64文件夾以加載本機庫。 這是問題所在。因爲我的項目沒有arm64文件夾。

這是解決方案;

defaultConfig{ 
      ndk { 
       abiFilters "armeabi-v7a", "x86", "armeabi", "mips" 
      } 
     } 
相關問題