利用gradle自动切换API host
公司建立了多个服务器区分测试环境和生产环境,每次发版时如果稍不注意就会用错host,甚至可能造成发布到线上的却使用了测试环境host的大错。利用gradle可以帮助我们自动化切换host。 网上大部分教程都是在app目录下直接添加BuildConfig的字段来实现,因为我把网络层抽离出来成一个单独的module,相对于稍微复杂一点,以此博文记录一下过程。
在module中建立多个flavor
在目标module的目录下找到build.gradle打开
android{
// 设置默认的flavor 一个flavor分debug和release,这里随意挑一个即可 因为我要用到的buildConfigField不需要区分
defaultPublishConfig "my_testDebug"
// 具体作用不明,但是不设置会报错
publishNonDefault true
// 建立多个flavor
productFlavors{
my_test {
buildConfigField "boolean", "API_HOST", "true"
}
my_release {
buildConfigField "boolean", "API_HOST", "false"
}
}
}
这样就完成了在module目录中建立多个flavor的工作,接下来只需要在打包时使用对应的flavor即可。
在app中调用module指定的flavor
在主应用目录app/下找到build.gradle文件打开
android{
productFlavors{
app_test{}
app_release{}
}
}
dependencies{
// 需要注意的是,不再是compile,把指定渠道的名字加在前面。
app_testCompile project(path: 'moduleName', configuration: 'my_testDebug')
}
如此已经大功告成。最后就在module中需要的地方调用变量。
String host;
if (BuildConfig.API_HOST) {
host = RELEASE_HOST;
}else {
host = TEST_HOST;
}
new Retrofit.Builder()
.baseUrl(host)
.build();
总结
结果总是很简单,但过程中要查询多方资料。官网总是写的很简陋,很多实用的功能并没有给出使用方式,一定要科学上网啊!
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。