2012-01-11 73 views
5

我想在Eclipse中構建一箇中等大小的項目。它由主應用程序項目和兩個Android庫組成。一切工作正常,直到我爲主項目添加了一個非常簡單的JNI庫。Android NDK庫:findLibrary返回null

當我在設備運行應用程序我看到此異常的logcat:

01-11 17:19:01.421:E/AndroidRuntime(26569):在 java.lang.Runtime.loadLibrary( Runtime.java:429) 無法加載XXX:findLibrary返回null

我用Google搜索周圍類似的問題,我認爲我做的一切都是正確的:

  1. 唯一的.c文件和文件Android.mk被放置在「JNI」文件夾
  2. 我建立與NDK的構建工具庫
  3. 的.so庫正確地放置在「庫\ armeabi」文件夾
  4. 我看到生成的apk文件確實包含我的本地庫

當我創建一個測試項目,並鏈接到同樣的本地代碼 - 它工作正常。主要項目中仍存在問題。我已經嘗試從頭開始創建Eclipse項目,但它並沒有幫助

我使用Android SDK工具16節

任何人都可以請幫我一個建議嗎?

謝謝!

回答

4

好吧,經過兩天的戰鬥Android SDK我設法解決我的問題。這裏有一些解釋,以防萬一它可以幫助別人。

我以前的項目結構:

  1. 的Android LIB1項目(與它自己的JNI代碼)
  2. 的Android LIB2項目(取決於LIB1)
  3. 應用1項目(取決於LIB2)
  4. 應用2項目(有它自己的jni代碼;取決於Lib2)

原始問題已經被看到,當我試圖加載jni libr在App2中的ary。我仍然不明白是什麼阻止了運行時找到App2中的jni。

但是,解決方案是從工作區中刪除Lib1項目,並將其作爲JAR文件添加到Lib2和這兩個應用程序。現在我終於可以在App2中使用加載jni庫了。

+1

你能澄清你的意思嗎?我目前有同樣的問題,但你的設置感到困惑。我有一個Android項目,取決於一個JNI庫,其中只有一個.c/.h文件。 – JuiCe 2012-07-31 16:48:14

+0

@JuiCe我認爲你的問題與我的經驗無關。我的問題是由於嘗試加載駐留在android庫項目中的JNI庫引起的。你應該檢查關於這個主題的其他帖子 – Anton 2012-07-31 18:50:00

+0

得到它的工作,謝謝你的迴應。 – JuiCe 2012-07-31 18:50:19

相關問題