Android NDK库:findLibrary返回null

时间:2012-01-11 15:30:59

标签: android android-ndk

我正在尝试在Eclipse中构建一个中型项目。它由主应用程序项目和两个Android库组成。在我为主项目添加一个非常简单的JNI库之前,一切正常。

当我在设备上运行应用程序时,我在LogCat中看到了这个异常:

  

01-11 17:19:01.421:E / AndroidRuntime(26569):at   java.lang.Runtime.loadLibrary(Runtime.java:429)   无法加载xxx:findLibrary返回null

我搜索了类似的问题,我相信我做的一切都是正确的:

  1. 唯一的.c文件和Android.mk文件放在'jni'文件夹
  2. 我使用ndk-build工具构建库
  3. .so库正确放置在'libs \ armeabi'文件夹
  4. 我看到生成的apk文件确实包含我的本机库
  5. 当我创建一个测试项目并链接到相同的本机代码时 - 它工作正常。问题在主项目中仍然存在。我已经尝试从头开始创建Eclipse项目,但它没有帮助

    我使用的是Android SDK Tools v.16

    有人可以帮我提一个建议吗?

    谢谢!

1 个答案:

答案 0 :(得分:4)

好的,经过两天的Android SDK战斗,我设法解决了我的问题。这里有一些解释,以防它可以帮助其他人。

我之前的项目结构:

  1. Android Lib1项目(使用它自己的jni代码)
  2. Android Lib2项目(取决于Lib1)
  3. App1项目(取决于Lib2)
  4. App2项目(使用它自己的jni代码;依赖于Lib2)
  5. 当我尝试在App2中加载jni库时,已经看到了原始问题。我仍然不明白是什么阻止了运行时在App2中找到jni。

    然而,解决方案是从工作区中删除Lib1项目并将其作为JAR文件添加到Lib2和两个应用程序。现在我终于可以在App2中使用加载jni lib了。