1. 程式人生 > 其它 >Android gradle指令碼相關

Android gradle指令碼相關

技術標籤:androidandroidgradleci/cd

1、除錯gradle指令碼

可以使用println(“hello world”)來列印變數值

參考文件(gradle斷點,我沒嘗試過):

https://stackoverflow.com/questions/28437636/how-to-debug-a-gradle-build-gradle-file-in-a-debugger-with-breakpoints

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/qq_35780104/article/details/107698388?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai

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中的版本號。