繁体   English   中英

在应用程序模块中使用带有 JNI 的库模块 Android 库模块

[英]Use library module with JNI in application module Android library module

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM