1、调试gradle脚本
可以使用println(“hello world”)来打印变量值
参考文档(gradle断点,我没尝试过):
2、根据Debug、release等信息来设置不同的变量/参数
android.applicationVariants.all { variant ->
def buildTypeName = variant.buildType.name
def flavorName = variant.flavorName
String time = null;
if ("debug".equalsIgnoreCase(buildTypeName)) {
time = buildTime(date, timeForDebugFileFormater)
} else {
time = buildTime(date, timeForReleaseFileFormater)
}
variant.outputs.each { output ->
def outputFile = output.outputFile
def fileName = "XXX_v${defaultConfig.versionName}_${flavorName}_${buildTypeName}_${time}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
这里需要注意的是:
1、以上脚本只适用于app module,即com.android.application,如果是com.android.library的话,需要改成如下:
android.libraryVariants.all { variant ->
....
}
2、这段代码不会立即执行。看下面的例子
def version = "1.0"
android.applicationVariants.all { variant ->
def buildTypeName = variant.buildType.name
if ("debug".equalsIgnoreCase(buildTypeName)) {
println(“debug。。。“)
` version = "1.0-debug"
} else {
println(“release。。。”)
` version = "1.0-release"
}
println("version:"+version)
最终输出的是:
version:1.0
debug
release
也就是说想通过这个方法来改变,顺序执行过程中的gradle变量是不可行的。改变在android编译构建时的变量是OK的
参考资料
https://blog.csdn.net/bunnycoffer/article/details/78852658
3、gradle读取环境变量
场景:在工作中需要使用流水线编译时,需要从外部设置环境变量来达到控制台根据不同的用户输入来编译不同的版本(不同于productFlavor)
String getEnvValue(String key,String def){
def val = System.getenv(key)
if(null != val){
return val
}
return def
}
android.defaultConfig.versionName = getEnvValue("VERSION_NAME","1.2")
android.defaultConfig.versionCode = getEnvValue("VERSION_CODE","1.2").toInteger()
以上代码可以通过外部变量来覆写build.gradle中的版本号。