我正在尝试将build.gradle文件配置为仅在选择发布版本变量时执行gradle任务。到目前为止,我的任务总是被执行,无论是在我的调试版本还是发布版本类型或签名配置中。我已经尝试在applicationsVariants块中添加我的任务,并检查它是否是发布版本,但它只是遍历所有变体。
applicationVariants.all { variant ->
variant.outputs.each { output ->
...
}
}
我知道调试和发布任务总是针对您选择的任何构建变体运行。是否可以仅在创建发布版本时执行某些代码?如果是这样,该代码在哪里?谢谢!
我已经阅读了关于此的每个Stackoverflow问题,但我没有想到的答案。我的最终目标是当我为Play商店版本选择“发布”版本变体时,会向我们的服务器发布一条消息。我不想在调试时发生这种情况。
答案 0 :(得分:14)
<强>尝试#3 强>
android.applicationVariants.all { v ->
if (v.buildType.name == "release"){
v.assemble.doLast {
logger.lifecycle("we have successfully built $v.name and can post a messaage to remote server")
}
}
}
答案 1 :(得分:1)
我必须做这样的事情来检查构建版本:
buildTypes {
applicationVariants.all { variant ->
variant.outputs.each {output ->
def project = "AppName"
def separator = "_"
/*def flavor = variant.productFlavors[0].name*/
def buildType = variant.variantData.variantConfiguration.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
def date = new Date();
def formattedDate = date.format('yyyyMMdd_HHmm')
if (variant.buildType.name == "release"){
def newApkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + formattedDate + ".apk"
output.outputFile = new File(output.outputFile.parent, newApkName)
}
if (variant.buildType.name == "debug"){
def newApkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + ".apk"
output.outputFile = new File(output.outputFile.parent, newApkName)
}
}
} }