如何在 gradle kts 中排除(忽略)android 构建变体

Posted

技术标签:

【中文标题】如何在 gradle kts 中排除(忽略)android 构建变体【英文标题】:How to exclude (ignore) android build variants in gradle kts 【发布时间】:2020-12-17 12:02:24 【问题描述】:

在将构建脚本从 groovy 迁移到 kotlin 期间,我遇到了排除构建变体的问题。

在 groovy 中非常简单:

android 
    variantFilter  variant ->
        if (variant.name == "lorempisum") 
            setIgnore(true)
        
    

但在 kotlin 中类似的事情不起作用。在 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,它也不起作用

【问题讨论】:

也许问题是android studio在运行时使用不同的源代码完成和其他 【参考方案1】:

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")

【讨论】:

【参考方案2】:

您应该首先更新到最新版本的 android studio 和插件。 试试这个

variantFilter 
    this.ignore = name == "lorempisum"

【讨论】:

在 IDE 中使用这个this.ignore 似乎是正确的,但是在编译过程中,它再次抛出Unresolved reference: ignore。我正在使用最新的稳定版 android studio 4.0.1,它不适用于 gradle 6.5.1 和 6.6.1 好的。我在 android studio 4.1.0 RC2 和 gradle 6.5 上。这个 gradle Kotlin DSL 在 4.1 或 4.2 上得到更好的支持。

以上是关于如何在 gradle kts 中排除(忽略)android 构建变体的主要内容,如果未能解决你的问题,请参考以下文章