libs和jniLibs的Android Studio依赖问题

时间:2018-09-28 13:48:08

标签: android android-studio opencv gradle android-gradle

我有一个需要使用OpenCV的应用程序和另一个第三方库。我遵循此stackoverflow instruction来导入最新版本的OpenCV(v3.4.3),并将.so文件复制到/ app / src / main / jniLibs。第三方库打包为aar文件,并放在/ app / libs文件夹中。

我的应用程序的build.gradle如下:

dependencies {
implementation project(':openCVLibrary343')
implementation(name: 'custom', ext: 'aar')
...

build.gradle也具有此设置(我认为),它指示Android Studio在libs文件夹中查找第三方库:

repositories {
flatDir {
    dirs 'libs'
}

虽然代码可以正常编译,但是在尝试运行应用程序时遇到错误。基本上,Android Studio抱怨说找不到第三方库。但是,当我使用“构建>分析APK”查看APK文件的lib文件夹中的内容时,我发现来自第三方库的文件实际上在那里。

有人有类似的问题吗?我一直在寻找答案,但没有发现任何特别相关的东西。我正在将Android Studio 3.2与最新版本的Gradle配合使用。

1 个答案:

答案 0 :(得分:0)

好的,我自己解决了这个问题。问题是我的第三方库仅为armeabi-v7a提供一个.so文件,而OpenCV为不同的系统提供了一堆其他文件夹。如果将所有文件夹都复制到jniLibs,Android会期望armeabi-v7a以外的其他文件夹具有相同的.so文件。因此它抱怨并停止了该应用程序。

解决方案是从jniLibs文件夹中的OpenCV中删除所有其他文件夹,并仅保留armeabi-v7a。