我知道如何創建一個 buildConfigField 變數并在我的build.gradle檔案中設定它的值。例如buildConfigField 'String', 'BUILD_VALUE', 'HELLO WORLD'。
我也知道如何通過任務從 gradle 命令列傳入一個引數。例如,如果我./gradleW propertyTypes -Dargs=test1 -Pargs=test2在終端中執行并且在我的 中有以下內容build.gradle:
task propertyTypes(){
doLast{
if (project.hasProperty("args")) {
println "Project property [" project.getProperty("args") "]"
}
println "System property [" System.getProperty("args") "]"
}
}
它將輸出test2到test1終端。
但是,我不知道如何將它們放在一起。我希望能夠通過 gradle 命令列傳入一個引數(例如“Hello World”),然后將其設定為 buildConfigField 以供程式本身使用。但是,當我嘗試時,要么任務不知道 buildConfigField 是什么,要么 buildConfigField 不知道傳遞給任務的屬性。
關于如何完成這項作業的任何見解?
uj5u.com熱心網友回復:
這個答案對我有用:
https://stackoverflow.com/a/65150777/5026136
轉述:
第 1 步:創建一個變數來保存 gradle.properties 檔案中的默認值
MY_VAR=defaultValue
第 2 步:buildConfigField在塊內應用的 build.gradle 檔案中創建一個名為 [VAR_NAME] 的變數android->defaultconfig。gradle.properties對于它的值,使用下面的語法給它你輸入的變數:
android {
defaultConfig {
buildConfigField "String", "VAR_NAME", "\"$MY_VAR\""
}
第 3 步:重建專案。(除非您這樣做,否則您將無法訪問代碼中的新 BuildConfig 變數。)
第 4 步:BuildConfig.VAR_NAME根據需要在應用程式代碼中使用該變數。
第 5 步:通過將以下標志添加到命令列,通過命令列為變數傳遞一個新值gradlew:
-P MY_VAR=new_value
new_value您決定的內容在哪里,并且MY_VAR是您放入 gradle.properties 檔案中的名稱。
作為額外的獎勵,您可以檢查您是否確實能夠通過命令列傳遞一個值并通過將以下內容添加到您的應用程式build.gradle(就在android塊之前)來正確更新它:
task output { println "\"$MY_VAR\"" }
(請注意,“輸出”只是任務的名稱 --- 你可以稱它為任何名稱)
然后,如果您./gradleW output在終端中運行,它將列印MY_VAR您設定的默認值gradle.properties.
如果改為運行./gradleW output -P MY_VAR=new_val,那么它將列印更新的值!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509862.html
