目的:开发环境和生产环境使用不同的URL,并实现自动切换
步骤:
1、设置modules的flavors

image.png
2、设置成功后modules的build.gradle文件中会出现下面的代码
productFlavors {
product {
}
dev {
}
}
Android studio左边Build Varians中会出现下面的选项:

image.png
3、app的Build Variant选项中会出现4个选项devDebug、devRealse、productDebug、peoductRelease。如果想去除其中的某个的话,可以在build.gradle中这么设置,比如我想去除devRelease这个选项:
variantFilter { variant ->
def names = variant.flavors.name
def buildType = variant.buildType.name
if (names.contains("dev") && buildType == "release") {
setIgnore(true)
}
}

image.png
没有release选项了
4、上面设置了3中环境,实际上只是生成了BuildConfig.java文件,

image.png
接下来在代码中对环境进行判断
public class APIConstant {
public static String BASE_URL = "https://xxxxxx";
static {
if (BuildConfig.FLAVOR != null && BuildConfig.FLAVOR.equals("dev")) {
BASE_URL = "http://xxx_xxx_x/frontend"; //如果是生产环境,则重新赋值
}
}
public static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json");
}
注:这种方式还可用于多渠道打包
Android Studio中包名为build.gradle中的application id,可以和manifest.xml中的不一致,manifest.xml中的包名仅作为R文件的包名

image.png

image.png