簡體   English   中英

如何在 gradle kts 中排除(忽略)android 構建變體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM