我刚刚转移到了android gradle构建系统,并且我不清楚如何设置常量值。用gradle设置常量值
例如我已经
API.java
包含
BASE_URL = "http://debug.server.com"
但当gradle这个构建版本我需要BASE_URL
是"http://release.server.com"
如何更换在构建这个时间值?
我刚刚转移到了android gradle构建系统,并且我不清楚如何设置常量值。用gradle设置常量值
例如我已经
API.java
包含
BASE_URL = "http://debug.server.com"
但当gradle这个构建版本我需要BASE_URL
是"http://release.server.com"
如何更换在构建这个时间值?
Gradle生成一个名为BuildConfig
的类,该类包含静态成员(例如布尔型为DEBUG
,对于调试变体,该类型设置为true)。
你既可以查询这个在Java中,像这样:
if (BuildConfig.DEBUG) {
BASE_URL = "http://debug.server.com"
} else {
BASE_URL = "http://release.server.com"
}
或作为一个班轮同样的事情:
BASE_URL = BuildConfig.DEBUG ? "http://debug.server.com" : "http://release.server.com"
OR
你可以实际上设置了BASE_URL
里面的BuildConfig
类的gradle使用像这样:
android {
buildTypes {
debug {
buildConfigField "String", "BASE_URL", '"http://debug.server.com"'
}
release {
buildConfigField "String", "BASE_URL", '"http://release.server.com"'
}
}
}
注意单,双引号在周围的gradle价值,为他人在评论中提到。这样,双引号就成为了价值的一部分。
结果,静态参考BuildConfig.BASE_URL
将指向对应的URL(即,“debug.server.com”调试“ release.server.com”释放)
回答菲费尔羊的是正确。只想为两个以上的环境留下解决方案。
两种风格的舞台和生活。
productFlavors {
staging {
...
}
production {
...
}
}
整个应用程序配置依赖于当前的ENV。使用:
public static String ENV_DEVELOPMENT = "development";
public static String ENV_STAGING = "staging";
public static String ENV_PRODUCTION = "production";
ENV = BuildConfig.DEBUG ? ENV_DEVELOPMENT : BuildConfig.FLAVOR;
我可以在本地测试时在所有不同的ENV之间切换,但如果发布则强制进行分段/实时设置。
非常感谢,会用第二种方法,非常灵活 – 2014-10-22 14:41:00
不客气。随意时,你可以标记为答案;) – 2014-10-22 19:10:22
你的回答只适用于我,如果我使用双引号,而不是单一的,而逃脱的URL字符串,像这样: 的Android { buildTypes { 调试{ buildConfigField“字符串“,”BASE_URL“,”\“http://debug.server.com \”“ } release { buildConfigField”String“,”BASE_URL“,”\“http://release.server。com \“” } } } – 2015-02-26 15:50:09