【问题标题】:How to exclude (ignore) android build variants in gradle kts如何在 gradle kts 中排除(忽略)android 构建变体
【发布时间】: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在运行时使用不同的源代码完成和其他

标签: android gradle-kotlin-dsl gradle-kts


【解决方案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 上得到更好的支持。
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多