我刚刚转到android gradle构建系统,我不清楚如何设置常量值。
e.g。我有
API.java
包含
BASE_URL = "http://debug.server.com"
但是当gradle构建版本时,我需要BASE_URL
为"http://release.server.com"
如何在构建时替换此值?
答案 0 :(得分:21)
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"
或强>
您实际上可以使用gradle在BASE_URL
类中设置BuildConfig
,如下所示:
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”用于发布)
答案 1 :(得分:0)
十五羊的回答是正确的。只想为两个以上的环境留下解决方案。
两种口味的分期和生活。
productFlavors {
staging {
...
}
production {
...
}
}
整个app配置依赖于当前的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,但如果释放则强制暂存/实时设置。