我有一个使用 Gradle 构建的 Android 应用程序,其中包含 BuildTypes 和 Product Flavors(变体)。 例如,我可以运行此命令来构建特定的 apk:
./gradlew testFlavor1Debug
./gradlew testFlavor2Debug
我必须在 build.gradle 中为每个变体创建一个自定义任务,例如:
./gradlew myCustomTaskFlavor1Debug
我为此创建了一个任务:
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
我如何定义一个自定义任务,动态的,每个变体,然后用正确的变体调用它?
最佳答案
发生这种情况是因为逻辑是在配置 时执行的。尝试添加一个操作(<<
):
android.applicationVariants.all { variant ->
task ("myCustomTask${variant.name.capitalize()}") << {
println "*** TEST ***"
println variant.name.capitalize()
}
}
关于每个变体的 Android Gradle 自定义任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148238/