Я некоторое время разрабатывал библиотеку (в формате aar), которая совместима с x86, armeabi-v7a и arm64-v8a abis. Библиотека работает как положено, но для уменьшения окончательного размера мы хотим разработать две разные библиотеки: одну с ab64 arm64-v8a и одну без нее. Библиотека зависит от openCV (используется на языке C ++), и у нас есть следующая структура проекта:
src
|_ main
|_ jniLibs
| | arm64-v8a
|----| armeabi-v7a
| x86
Каждая папка abi содержит libopencv_java3.so.
Я создал два варианта продукта, каждый с abiFilters, необходимыми для правильной работы.
flavorDimensions "default"
productFlavors {
v7a {
externalNativeBuild {
cmake {
abiFilters 'x86', 'armeabi-v7a'
}
}
}
v8a {
externalNativeBuild {
cmake {
abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
}
}
}
}
Теперь у меня есть два варианта сборки, и оба компилируются без ошибок. Тем не менее, v7a aar по-прежнему содержит папку arm64-v8a и библиотеку. Чтобы решить эту проблему, я добавил v7a flavor следующее:
packagingOptions {
exclude 'lib/arm64-v8a/libopencv_java3.so'
}
Теперь, v7a aar не содержит внутри себя папку arm64-v8a, но когда я выбираю версию v8a, папка существует, но внутри нее нет libopencv_java3.so!
Разве эта опция не должна влиять только на v7a? Что я делаю неправильно? Любая помощь будет оценена.
Примечания: проверенная версия Gradle: 3.1.2 и 3.1.4.