未找到android项目中的本机库(UnsatisfiedLinkError)

时间:2016-04-01 17:11:17

标签: java android linker java-native-interface

我有一个Android项目,我添加了一个外部.jar文件,其中包含几个 .class 文件以及一些 .so 文件。

当我尝试使用 .class 文件提供的一些方法时,我得到一个UnsatisfiedLinkError-Exception,它表示无法找到这些方法的实现。

显然问题是包含实现的 .so 库未正确加载/无法找到。

我需要做什么才能从运行时找到外部 .jar 文件中的本机库?

更多详情:

我正在使用AndroidStudio,应用程序在模拟器上使用设备" Nexus 5 API 23 x86"进行测试。 .so 文件也支持x86。

我将 .jar 文件复制到 / app / libs 文件夹中。然后我在IDE中右键单击该文件并选择" Add as library"。

enter image description here

1 个答案:

答案 0 :(得分:1)

正如您所看到的那样,崩溃说它无法加载本机库。但为什么呢?

enter image description here

首先,我检查了我的结构,如果本机库.so文件位置正确。

除了这个疯狂的错误外,似乎一切都还好。

经过一番研究后,我发现一些Android设备有64位处理器。

此设备生成并检查arm64文件夹以加载本机库。 那就是问题所在。因为我的项目没有arm64文件夹。

这是解决方案;

defaultConfig{
          ndk {
              abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
             }
         }