【问题标题】:Android NDK library: findLibrary returned nullAndroid NDK 库:findLibrary 返回 null
【发布时间】:2012-02-07 23:10:30
【问题描述】:

我正在尝试在 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

谁能帮我提个建议?

谢谢!

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    好的,经过两天与 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 库了。

    【讨论】:

    • 你能澄清一下你的意思吗?我目前遇到同样的问题,但对您的设置感到困惑。我有一个依赖于单个 JNI 库的 Android 项目,其中只有一个 .c/.h 文件。
    • @JuiCe 我认为您的问题与我的经历无关。我的问题是由于尝试加载驻留在 android 库项目中的 JNI 库引起的。您应该查看有关此主题的其他帖子
    • 告诉我,我有过的最糟糕的编码体验。
    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多