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

标签 android groovy gradle android-productflavors

我有一个使用 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/

相关文章:

java - 当您不是 Kotlin Multiplatform 项目时,是否有一种干净的方法可以在 Gradle 中声明多平台依赖项?

android - Android 的辅助功能应用程序,运行在所有其他应用程序之上,可以干预并将触摸/点击事件发送到其他应用程序的 View

java - 在android中解析json日期字符串

sorting - Groovy:按值对哈希键进行排序

google-app-engine - 如何获取 Google App Engine 上的实际 URI?

java - 将 android studio 升级到 Android Studio Chipmunk 后 | 2021.2.1 得到这个 gradle 问题

android - 是否有任何免费/开源库用于压缩视频文件/减少 android 中视频文件的文件大小?

Android:停止可运行并重新启动它

Jenkins 管道 sshPublisher : How to get exit code and output of execCommand?

spring-boot - 为什么spring boot应用程序启动时liquibase没有启动?