小编Mig*_*sla的帖子

gradle构建flavor和packagingOptions的问题

我一直在开发一个与x86,armeabi-v7a和arm64-v8a abis兼容的库(以aar格式).该库按预期工作,但为了减小最终大小,我们希望开发两个不同的库:一个使用arm64-v8a abi,​​另一个不使用它.该库依赖于openCV(在C++语言中使用),我们有以下项目结构:

src
 |_ main
     |_ jniLibs
           |    | arm64-v8a
           |----| armeabi-v7a
                | x86
Run Code Online (Sandbox Code Playgroud)

每个abi文件夹都包含libopencv_java3.so.

我创建了两种产品口味,每种口味都需要abiFilters才能正常工作.

flavorDimensions "default"
productFlavors {
    v7a {
        externalNativeBuild {
            cmake {
                abiFilters 'x86', 'armeabi-v7a'
            }
        }
    }
    v8a {
        externalNativeBuild {
            cmake {
                abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有两个构建变体可供选择,并且编译时没有错误.但是,v7a aar仍包含arm64-v8a文件夹和库.为了解决这个问题,我在v7a中添加了以下内容:

packagingOptions {
    exclude 'lib/arm64-v8a/libopencv_java3.so'
}
Run Code Online (Sandbox Code Playgroud)

现在,v7a aar不包含其中的arm64-v8a文件夹,但是当我选择v8a flavor时,该文件夹存在但是​​没有libopencv_java3.so放在其中!

这个选项不应该只对v7a有影响吗?我究竟做错了什么?任何帮助将不胜感激.

注:测试的gradle版本:3.1.2和3.1.4.

android gradle android-gradle-plugin

7
推荐指数
1
解决办法
447
查看次数

标签 统计

android ×1

android-gradle-plugin ×1

gradle ×1