每个变体的Android Gradle自定义任务

我有一个使用Gradle构build的Android应用程序,其中包含BuildTypes和Product Flavors(变体)。 我可以例如运行这个命令来build立一个特定的apk:

./gradlew testFlavor1Debug ./gradlew testFlavor2Debug 

我必须在每个变体的build.gradle中创build一个自定义任务,例如:

 ./gradlew myCustomTaskFlavor1Debug 

我为此创build了一个任务:

 android.applicationVariants.all { variant -> task ("myCustomTask${variant.name.capitalize()}") { println "*** TEST ***" println variant.name.capitalize() } } 

我的问题是,这个任务被称为所有的变种,而不是我正在运行的唯一一个。 输出:

 ./gradlew myCustomTaskFlavor1Debug *** TEST *** Flavor1Debug *** TEST *** Flavor1Release *** TEST *** Flavor2Debug *** TEST *** Flavor2Release 

预期产出:

 ./gradlew myCustomTaskFlavor1Debug *** TEST *** Flavor1Debug 

我怎样才能定义一个自定义任务,dynamic,每个变体,然后用正确的变体来调用它?

这是因为逻辑是在configuration时执行的。 尝试添加一个动作( << ):

 android.applicationVariants.all { variant -> task ("myCustomTask${variant.name.capitalize()}") << { println "*** TEST ***" println variant.name.capitalize() } }