[英]How to exclude (ignore) android build variants in gradle kts
在从 groovy 迁移构建脚本到 kotlin 的过程中,我遇到了排除构建变体的问题。
在 groovy 中这很简单:
android {
variantFilter { variant ->
if (variant.name == "lorempisum") {
setIgnore(true)
}
}
}
但在科特林类似的事情是行不通的。 在 android studio 中似乎没问题,但在编译过程中它会抛出Unresolved reference: isIgnore
android {
variantFilter {
if (buildType.name == "lorempisum") {
isIgnore = true
}
}
}
从另一方面来看,这报告Unresolved reference: setIgnore
,但在编译期间有效
android {
variantFilter {
if (buildType.name == "lorempisum") {
this.setIgnore(true)
}
}
}
任何人都知道如何以正确的方式做到这一点?
我正在使用 kotlin 1.3.72、android studio 4.0.1 和 gradle 6.5.1
- - 编辑 - -
我在第二个块中修复了示例ignore
-> isIgnore
,它也不起作用
Soultion 是ignore = true
有一点细节。
如果您将这一行保留在顶级build.gradle.kts
此方法有效:
classpath("com.android.tools.build:gradle:4.0.1")
而不仅仅是在buildSrc
上:
implementation("com.android.tools.build:gradle:4.0.1")
使用beforeVariants块:
androidComponents {
beforeVariants { variantBuilder ->
// To check for a certain build type, use variantBuilder.buildType == "<buildType>"
if (variantBuilder.productFlavors.containsAll(listOf("api" to "minApi21", "mode" to "demo"))) {
// Gradle ignores any variants that satisfy the conditions above.
variantBuilder.enabled = false
}
}
}
您应该首先更新到最新版本的 android studio 和插件。 试试这个
variantFilter {
this.ignore = name == "lorempisum"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.