Android gradle指令碼相關
阿新 • • 發佈:2021-01-01
技術標籤:androidandroidgradleci/cd
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中的版本號。