2014-03-03 57 views
0

使用。所以,當返回null我從其他球隊一個libother_team.so文件,我加入了這個。所以直接在我的下路庫/ armeabi-V7A項目/調用LoadLibrary失敗,錯誤findLibray從其他來源

當我嘗試加載該庫失敗下面的錯誤

java.lang.UnsatisfiedLinkError: Couldn't load other_team from loader  
dalvik.system.PathClassLoader[dexPath=/data/app/com.example.testapp-1.apk, 
libraryPath=/data/app-lib/com.example.testapp-1]: findLibrary returned null 

我封鎖在這個問題上的任何幫助就同一高度讚賞。

+0

使用adb shell或終端列表/data/app-lib/com.example.testapp-1 –

+0

的內容由於您認爲自己構建它可行,但其他人提供的版本失敗,因此很有可能他們正在使用錯誤的工具鏈或設置。您可以將這些文件與ndk的readelf或objdump進行比較。此外,這個錯誤消息似乎不同於我所期望的。你使用什麼命令來顯式加載本地庫,以及運行的原因是什麼在logcat中出現? (你一定要看到成功或失敗的一些事情)。 –

回答

0

您是否將.so庫放入正確的路徑? 正確的路徑是:

  • /庫/ armeabi
  • /庫/ armeabi-V7A
  • /庫/ MIPS
  • /庫/ 86

基於設備架構。

此外,請確保您嘗試調用的函數已正確定義爲C代碼(顯然,Java本機方法正確對應於C函數)。有關更多信息,請閱讀here

+0

是的,我有.so在正確的路徑 \ libs \ armeabi-v7a \ other_team.so但仍然得到上述錯誤,以驗證相同的,我已經添加了所有\ jni文件夾中的所有源代碼構建.so那麼它工作正常。但是在\ libs \ armeabi-v7a \ other_team.so中只有.so沒有相同的源代碼纔會失敗! – Manju

+2

Juggernaut93,你確定這些是正確的路徑嗎?我相信項目文件夾通常是帶有「s」的「libs」,而設備上的安裝會自動以「lib」結束。 –

+0

修好了,謝謝。 – Juggernaut93

0

已經安裝圖書館/data/app-lib/com.example.testapp-1它必須遵循的命名約定:LIB任何。那麼。您將在靜態構造函數中使用System.load("whatever")加載它。您可以根據需要重命名第三方文件。請確保您的新名稱具有足夠的獨特性,因爲如果Android設備在/system/lib中具有相同的名稱,則系統庫將由Java加載。

相關問題