据我所知,没有输出所有变体的任务。创建这样的任务并不难,但我认为这里可能有更适合您的用例的解决方案。
所以你在这里有几个选择。首先,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 plugin(AGP) api's。