2013-11-28 43 views
0

我有一個工作項目,我使用JNI來調用C庫中的方法。無法將.so庫從工作項目集成到另一個

我的項目結構:

enter image description here

而且代碼加載庫:

static { 
    System.loadLibrary("RemoveBackground"); 
} 

它的工作原理好。但直到我嘗試將此功能集成到其他項目中。我複製了jnilibs文件夾。還有全部three classes沒有RemoveBackgroundActivity(測試活動)。當我編譯這個項目,我有一個exeption:

1663-1663/com.example.Activities E/dalvikvm﹕ The lib may be ARM... trying to load it [/data/data/com.example.Activities/lib/libRemoveBackground.so] using houdini 
1663-1663/com.example.Activities E/dalvikvm﹕ dvmHoudiniDlopen returns 0x9833cf40 with bool=1 

你知道如何解決這個問題或其他方式來做到這一點?

+0

1)我不確定IDEA,但在Eclipse中,您必須在項目中啓用本地開發。你不能只複製目錄。 2)我懷疑你需要libs目錄,除非你連接其他庫。我的一部分認爲它試圖加載在另一個項目中建立的庫。 3)Application.mk中有什麼?通常沒有必要。 4)除非你明確註冊本地方法,否則JNI調用可能需要更新,因爲包名稱(儘管這可能是未來的問題)。 – Dave

回答

0

我想你嘗試使用的RemoveBackground.so本地庫不是爲ARM架構而構建的。我不確定Linux是什麼,但是在Mac OS X上,您可以使用lipo命令檢查本機庫支持的體系結構。例如:

lipo -info /usr/lib/RemoveBackground.so 
相關問題