Android - 仅在发布版本变体上执行Gradle任务

Mar*_*ark 12 android build.gradle android-gradle-plugin

我正在尝试将build.gradle文件配置为仅在选择发布版本变量时执行gradle任务.到目前为止,我的任务总是被执行,无论是在我的调试版本还是发布版本类型或签名配置中.我已经尝试在applicationsVariants块中添加我的任务,并检查它是否是发布版本,但它只是循环遍历所有变体.

applicationVariants.all { variant ->
            variant.outputs.each { output ->
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道调试和发布任务总是针对您选择的任何构建变体运行.是否可以仅在创建发布版本时执行某些代码?如果是这样,该代码在哪里?谢谢!

我已经阅读了关于此问题的每个Stackoverflow问题,但没有一个答案确实是我想要的.我的最终目标是当我为Play商店版本选择"发布"版本变体时,会向我们的服务器发布一条消息.我不想在调试时发生这种情况.

Kor*_*oly 18

尝试#3

android.applicationVariants.all {  variant ->
    if ( variant.buildType.name == "release"){
        variant.assemble.doLast { // Can also use doFirst here to run at the start.
            logger.lifecycle("we have successfully built $v.name and can post a messaage to remote server")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • **警告:** 这可能会减慢您的构建速度。*我们反复看到抱怨构建缓慢的人的一件事是“doLast”。“doLast”很糟糕,gradle 无法理解你的任务现在是否是增量的,因为它不知道你在那里做什么。* https://youtu.be/7ll-rkLCtyk?t=36m4s (3认同)