[英]Android studio flavor dimensions processed all, not selected one
我在模块 build.gradle 文件中有一个风味维度,并且 gradle 构建过程贯穿所有构建变体,无论实际构建变体是什么。 这是模块 build.gradle:
flavorDimensions 'type', 'jnitype'
productFlavors {
demo {
dimension 'type'
versionNameSuffix '.demo'
}
production {
dimension 'type'
versionNameSuffix '.production'
}
usejni {
dimension 'jnitype'
versionNameSuffix '.usejni'
copy {
from('../jnilib/data') {
include 'sdk_data.gpu'
....
}
into 'src/main/assets/data'
}
}
nojni {
dimension 'jnitype'
versionNameSuffix '.nojni'
delete('src/main/assets/data/*.*')
packagingOptions {
exclude 'lib/arm64-v8a/sdk.so'
...
}
}
}
因此,无论选择什么构建变体,demoUsejni 或 demoNojni,gradle 都会运行“usejni”,然后是“nojni”变体——它会复制文件和库,然后删除它们。 我使用 gradle 调试来确认这一点。
如何告诉 gradle 仅使用选定的构建风格?
AS 3.5.2、gradle 插件 5.4.1、android 构建工具 3.5.2。
最后找到解决方法:使用 gradle 任务名称检查所需的风味。 对于编译类型 gradle 的操作,任务名称将为“:module_name:assembleFlavor1Flavor2...FlavornBuildtype”。 所以我会检查“assemble”和“Nojni”/“Usejni”。
String taskName = "";
if (gradle.startParameter.taskNames.size > 0)
taskName = gradle.startParameter.taskNames.get(0)
usejni {
dimension 'jnitype'
versionNameSuffix '.usejni'
if (taskName.contains("Usejni") && taskName.contains("assemble")) {
copy {
from('../jnilib/data') {
include 'sdk_data.gpu'
....
}
into 'src/main/assets/data'
}
}
}
nojni {
dimension 'jnitype'
versionNameSuffix '.nojni'
if (taskName.contains("Nojni") && taskName.contains("assemble")) {
delete('src/main/assets/data/*.*')
packagingOptions {
exclude 'lib/arm64-v8a/sdk.so'
...
}
}
}
就像一个魅力!
在此答案中找到解决方案的提示: How to get current buildType in Android Gradle configuration
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.