2016-04-01 132 views
1

我有一个Android项目,我加入其中包含几个的.class文件在另外一些。那么文件外部.jar文件。本地库未找到(UnsatisfiedLinkError)

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

很明显,问题在于包含实现的库文件不能正确加载/找不到。

我该怎么做才能从运行时找到外部文件的本地库.jar


更多细节:

我使用AndroidStudio和应用程序是在与设备 “的Nexus 5 API 23 86” 仿真器进行测试。 .so文件也支持x86。

我将.jar文件复制到/app/libs文件夹中。然后,我右键单击IDE中的文件并选择“添加为库”。

enter image description here

+1

请提供证明问题的[mcve]。这将包括'.so'文件支持哪些CPU体系结构的详细信息,您如何在应用程序中包括这些'.so'文件以及您正在测试的CPU体系结构。 – CommonsWare

+0

我添加了您请求的信息。让我知道如果我错过了什么。 – user32323

+0

你是如何在应用中包含'.so'文件的?他们不在JAR中(如果他们是,那是你的问题)。预编译的'.so'文件最好作为AAR的一部分与JAR一起分发,以避免所有这些麻烦。 – CommonsWare

回答

1

正如你看到的那一声是说,它无法加载本地库。但为什么?

enter image description here

所有我检查我的结构,如果位置是正确的本地库.so文件的第一位。

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

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

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

这是解决方案;

defaultConfig{ 
      ndk { 
       abiFilters "armeabi-v7a", "x86", "armeabi", "mips" 
      } 
     } 
相关问题