【问题标题】:Use library module with JNI in application module Android library module在应用程序模块 Android 库模块中使用带有 JNI 的库模块
【发布时间】:2017-12-10 12:30:36
【问题描述】:

我有一个包含 3 个模块的项目 - 一个库和 2 个使用该库的应用程序。现在我想将 native-lib(一个 c 文件)添加到库模块中,并在其中一个库类中使用它。我是 NDK 的新手,所以我按照 Google 指南创建了支持 NDK 的新项目,它运行良好。 然后我复制cpp目录,CMakeList,并保持项目的正确结构。 现在,发生的事情是项目编译成功,但是当我尝试从 java 类调用本机 func 时崩溃。 异常:方法抛出“java.lang.UnsatisfiedLinkError”异常。

【问题讨论】:

  • 有什么消息吗?

标签: java android android-studio android-ndk shared-libraries


【解决方案1】:

当我编写一个引用其他本机库的 Java 库时,我遇到了这个异常以及后续的 ClassNotFoundException。我没有像您那样使用 NDK,但也许这些步骤(为我解决了它)可以为您提供一些新想法:

  1. 我在 AndroidStudio 中将本机库(对我来说是 OpenCV for Java)作为库导入。
  2. 我将本机源文件放在(导入的)库的 jniLibs 文件夹中。
  3. 然后我将库导出为 AAR 文件。 (制作模块 -> 从/build/outputs/aar/ 取出 AAR)
  4. 我在自己的库中使用了 AAR 文件。这样,引用的本机库的类就可以在我自己的导出库中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2021-12-17
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多