【发布时间】:2019-02-18 05:22:03
【问题描述】:
我一直在开发一个与 x86、armeabi-v7a 和 arm64-v8a abis 兼容的库(aar 格式)。该库按预期工作,但为了减小最终大小,我们想要开发两个不同的库:一个带有 arm64-v8a abi,一个没有它。该库依赖于openCV(用于C++语言),我们有以下项目结构:
src
|_ main
|_ jniLibs
| | arm64-v8a
|----| armeabi-v7a
| x86
每个 abi 文件夹都包含 libopencv_java3.so。
我创建了两种产品风格,每种风格都带有正常工作所需的 abiFilter。
flavorDimensions "default"
productFlavors {
v7a {
externalNativeBuild {
cmake {
abiFilters 'x86', 'armeabi-v7a'
}
}
}
v8a {
externalNativeBuild {
cmake {
abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
}
}
}
}
现在我有两个构建变体可供选择,并且都可以无错误地编译。但是,v7a aar 仍然包含 arm64-v8a 文件夹和其中的库。为了解决这个问题,我在 v7a 中添加了以下内容:
packagingOptions {
exclude 'lib/arm64-v8a/libopencv_java3.so'
}
现在,v7a aar 中不包含 arm64-v8a 文件夹,但是当我选择 v8a 风格时,该文件夹存在,但其中没有放置 libopencv_java3.so!
这个选项不应该只影响 v7a 吗?我究竟做错了什么?任何帮助将不胜感激。
注意:已测试的 gradle 版本:3.1.2 和 3.1.4。
【问题讨论】:
标签: android gradle android-gradle-plugin