Android NDK库:findLibrary返回null

Ant*_*ton 5 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文件确实包含我的本机库

当我创建一个测试项目并链接到相同的本机代码时 - 它工作正常.问题在主项目中仍然存在.我已经尝试从头开始创建Eclipse项目,但它没有帮助

我使用的是Android SDK Tools v.16

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

谢谢!

Ant*_*ton 4

好吧,经过两天的 Android SDK 斗争,我成功解决了我的问题。这是一些解释,以防对其他人有所帮助。

我之前的项目结构:

  1. Android Lib1项目(带有它自己的jni代码)
  2. Android Lib2项目(依赖Lib1)
  3. App1项目(依赖Lib2)
  4. App2 项目(有自己的 jni 代码;依赖于 Lib2)

当我尝试在 App2 中加载 jni 库时,发现了原来的问题。我仍然不明白是什么阻止运行时在 App2 中找到 jni。

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

  • 告诉我吧,我曾经有过的最糟糕的编码经历。 (4认同)