如何在 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 构建变体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 build.gradle.kts 中设置 openApi 生成器全局属性

如何在 android gradle.kts 中定义自定义源集?

如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库

如何在 android studio 中将 .aar 文件添加到 gradle.kts?

Android Studio:使用 Gradle KTS 构建文件的项目结构不可用

如何解析和修改build.gradle.kts Kotlin Gradle构建脚本?