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

时间:2017-07-06 13:11:07

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

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

1 个答案:

答案 0 :(得分:2)

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

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