前言
这篇文章是记录在开发过程中,针对研发、测试、产品来构建不同的APK的应用场景。
应用场景一:公司有研发、测试、上线的域名,应该如何切换配置?
在工作中,我们有这样的需求:要求研发、测试、上线调用的api的域名需要区分开来。相信有些同学是通过注释掉代码来切换环境,就像这样:
// public static final String BASEURL = "http://domainDev.com";//dev
// public static final String BASEURL = "http://domainTest.com";//test
public static final String BASEURL = "http://domainRelease.com";//release
这种方式有很大的风险,如果发版APK中忘记将注释修改回来,会导致不可预估的错误。对于基础配置官网给我们提供了一个建议《配置构建变体》,可以通过Application的插件,配置不同的产品风味,根据风味区分域名配置,下面我就来讲解一下通过这篇文章的原理构建我切换域名的逻辑。
app/build.gradle
android{
....
productFlavors {
dev{
//研发
buildConfigField "int", "buildTypeInt", "1"
dimension "dev"
}
devTest{
//测试
buildConfigField "int", "buildTypeInt", "2"
dimension "dev"
}
prod{
//发布
buildConfigField "int", "buildTypeInt", "3"
dimension "dev"
}
}
buildTypes {
debug {
}
release {
}
}
}
通过上面的配置,我们分别配置6(3*2)个不同的打包流程。在AS中的左边导航栏出现。
通过buildConfigField "int", "buildTypeInt", "1"
代码,可以在项目的BuildConfig
类中生成buildTypeInt
的静态变量。
package com.dustess.dustessassistant;
public final class BuildConfig {
...
public static final int buildTypeInt = 1;
}
通过此变量就切换我们的域名了。
private static String getServiceUrlInternl() {
switch (BuildConfig.buildTypeInt){
//开发 目前测试开发一套环境
case 1:
SERVICE = "http://domainRelease.