BuildConfig中的常量實際上都是gradle生成的,而且註明了不可修改,包括是否爲DEBUG模式,版本號等一些信息。
現在我們想要在裏面存一個當前的git commitId以供使用,首先找到app對應的gradle文件(不同module有不同對應的BuildConfig,要注意),在android模塊上方定義一個函數:
def getGitSha = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'sh', '-c', 'git rev-parse --short HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
我們就是通過這個函數獲取commitId,可以看到就是執行相應的命令。
然後在android{defaultConfig{里加一行:
buildConfigField "String", "COMMIT_ID", "\"${getGitSha()}\""
就是這一行生命可以調用函數並將值存到BuildConfig中。第一個參數是類型,第二個是name,第三個是值,這裏是調用的函數。
當時我開始沒有加雙引號和$,直接gitGitSha,發現也能輸出,但是文件中的值是一個不帶雙引號的字符串,就像:COMMIT_ID= dqiuwdh12424 這種,加上就可以了。
接下來就可以在代碼中使用BuildConfig.xxx進行使用了。