【发布时间】:2014-03-19 07:08:26
【问题描述】:
我的应用程序有多种风格。例如。 开发、阶段、生产风格。
因此,dev 将指向开发服务器 url、开发应用程序 ID 等,对于舞台和生产也是如此。 对于我的 strings.xml 中存在的应用程序 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 在哪里 -
<string name="app_id">some_app_id</string>
现在,服务器 url 作为普通常量存储在我的 Config.java 文件中-
public static final String BASE_URL = "http://dev.blahblah.com";
所以问题是如何根据不同的风格从我的 build.gradle 文件中更改 Config.java 中的这一行?
【问题讨论】:
-
为什么不使用您从中读取的具有适当名称的属性文件?你可以从静态初始化器中做到这一点
-
如何告诉我的 Config.java 使用属性文件中的 url?您可以使用您的方法发布答案吗?这似乎是一个好方法。如果您使用示例进行说明,那就更好了。谢谢
-
这也取决于您如何获得该 app_id。我不知道安卓...
-
如果我将 url 保留在 strings.xml 中。任何人都可以提取我的 .apk 文件并读取 strings.xml,所以我不想采用这种方法。
标签: java android gradle android-gradle-plugin build.gradle