如何使用 gradlew 列出所有构建变体?

问题描述 投票:0回答:3

是否可以使用

gradlew
或其他命令行工具列出所有构建变体?

例如以下

build.gradle

buildTypes {
    debug {}
    release {}
}
productFlavors {
    dev {}
    prod {}
}

该命令将返回类似以下内容:

devDebug
devRelease
prodDebug
prodRelease

一个选择是在我的

build.gradle
中创建一个 gradle 任务,然后我将使用
gradlew
执行该任务。但我正在寻找一种适用于任何项目的通用解决方案,无需添加任何内容。

android gradle android-gradle-plugin build.gradle
3个回答
8
投票

据我所知,没有一个任务可以输出所有变体。创建这样的任务并不是很难,但我认为这里可能有更好的解决方案适合您的用例。

所以你有几个选择。首先,gradle 任务的设置方式使得您的示例将具有以下任务:

assemble
assembleDev
assembleProd
assembleDebug
assembleRelease
assembleDevDebug
assembleDevRelease
assembleProdDebug
assembleProdRelease

如果您的目标是构建所有变体,那么您只需运行

:app:assemble
,所有的productFlavor和buildType变体都将被构建。如果您只想发布版本,但是每种风格,那么您可以执行
:app:assembleRelease
,这将自动运行

assembleDevRelease
assembleProdRelease

许多其他任务也遵循相同的模式。但不一定是全部。正如 Stephan 在 https://stackoverflow.com/a/69254774/2923245 中提到的那样,运行

:app:tasks
可以是查看您有哪些可用任务的良好开端。


如果您确实需要一个输出每个变体名称的任务(或者您想在代码中访问这些名称),那么您可以执行以下操作:

task("printVariants") {
    doFirst {
        println project.getExtensions().getByType(com.android.build.gradle.AppExtension.class).applicationVariants*.name
    }
}

或者,如果您想对每个变体执行某些操作,则可以执行以下操作:

AppExtension android = project.getExtensions().getByType(AppExtension.class)
android.applicationVariants.each { appVariant ->
    // Variant-specific code goes here.
    // Example below: Creating a task for each variant.
    project.tasks.create("${appVariant.name}MyVariantSpecificTask", ...)
}

记住 build.gradle 只是代码会有所帮助。你可以在这里编写任何代码 - 只要你熟悉 Groovy 和 gradle + android gradle 插件 (AGP) api。


6
投票

Gradle 已经为此提供了一个任务,称为

tasks

./gradlew tasks

0
投票

现在,2024 年,我使用 Android Gradle Plugin 8.3.1 和 AndroidComponentsExtension(在 7.0.0 中添加)来列出所有变体。
我在我的

app/build.gradle.kts
文件中执行此操作:

android {
    // android configuration code here
    androidComponents {
        onVariants {
            println("Variant: ${it.name}, buildType: ${it.buildType}, flavor: ${it.flavorName}")
        }
    }
}

然后,只需运行:

./gradlew :app:help
。并得到下一个输出:

> Configure project :app

Variant: googleDebug, buildType: debug, flavor: google
Variant: huaweiDebug, buildType: debug, flavor: huawei
Variant: googleRelease, buildType: release, flavor: google
Variant: huaweiRelease, buildType: release, flavor: huawei
Variant: googleQa, buildType: qa, flavor: google
Variant: huaweiQa, buildType: qa, flavor: huawei
© www.soinside.com 2019 - 2024. All rights reserved.