我有我的應用程序有多種口味的情況。例如。開發,階段,生產口味。如何從build.gradle更改.java文件中的某些值?
因此,dev將指向dev服務器url,dev app id等等,並用於舞臺和製作。
variant.mergeResources.doLast {
File valuesFile = file("${buildDir}/res/all/${variant.dirName}/values/values.xml")
println("Replacing app id in " + variant.dirName)
String content = valuesFile.getText('UTF-8')
def appid;
String variantDirName = variant.dirName;
if (variantDirName.contains("dev")) {
appid = '1234_dev'
} else if(variantDirName.contains("stage")) {
appid = '1234_stage'
} else if(variantDirName.contains("prod")) {
appid = '1234_prod'
} else {
appid = '1234_unknown'
}
content = content.replaceAll(/some_app_id/, appid)
valuesFile.write(content, 'UTF-8')
}
哪裏我的strings.xml是 - - 對於應用程序ID是存在於我的strings.xml,我可以使用下面的代碼替換它們
<string name="app_id">some_app_id</string>
現在,服務器的URL都存儲在我的Config.java文件作爲正常恆
public static final String BASE_URL = "http://dev.blahblah.com";
所以現在的問題是如何在Config.java這條線從我的build.gradle文件,這取決於不同的風味改變?
爲什麼不與你從閱讀相應名稱的屬性文件?你可以從一個靜態的初始化程序做到這一點 – fge
如何告訴我的Config.java使用來自屬性文件的url?你可以用你的方法發表答案嗎?這似乎是一個好方法。如果您使用示例進行說明,則更好。謝謝 – rohit
這取決於你如何得到app_id。我不知道android ... – fge