Android - 仅在发布构建变体上执行 Gradle 任务
Android - Only execute Gradle task on release build variant
我正在尝试将我的 build.gradle 文件配置为仅在 select 发布构建变体时执行 gradle 任务。到目前为止,我的任务总是得到执行,无论是在我的调试或发布构建类型中还是在签名配置中。我尝试将我的任务添加到 applicationsVariants 块中并检查它是否是发布变体,但它只是循环遍历所有变体。
applicationVariants.all { variant ->
variant.outputs.each { output ->
...
}
}
我知道无论您选择哪种构建变体,调试和发布任务总是 运行。是否可以仅在创建发布构建时执行某些代码?如果是这样,该代码去哪里了?谢谢!
我已经通读了关于此的每个 Whosebug 问题,但是 none 的答案确实是我想要的。我的最终目标是当我 select Play 商店构建的 "release" 构建变体时,一条消息会发布到我们的服务器。我不希望在调试时发生这种情况。
为您感兴趣的构建类型添加 doFirst
或 doLast
。
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")
}
}
}
我必须做这样的事情来检查构建版本:
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)
}
}
} }
我正在尝试将我的 build.gradle 文件配置为仅在 select 发布构建变体时执行 gradle 任务。到目前为止,我的任务总是得到执行,无论是在我的调试或发布构建类型中还是在签名配置中。我尝试将我的任务添加到 applicationsVariants 块中并检查它是否是发布变体,但它只是循环遍历所有变体。
applicationVariants.all { variant ->
variant.outputs.each { output ->
...
}
}
我知道无论您选择哪种构建变体,调试和发布任务总是 运行。是否可以仅在创建发布构建时执行某些代码?如果是这样,该代码去哪里了?谢谢!
我已经通读了关于此的每个 Whosebug 问题,但是 none 的答案确实是我想要的。我的最终目标是当我 select Play 商店构建的 "release" 构建变体时,一条消息会发布到我们的服务器。我不希望在调试时发生这种情况。
为您感兴趣的构建类型添加 doFirst
或 doLast
。
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")
}
}
}
我必须做这样的事情来检查构建版本:
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)
}
}
} }