不同buildType下的区别构建配置方式

来源:互联网 发布:淘宝男模特 编辑:程序博客网 时间:2024/06/05 05:17

需求背景:在测试环境中服务器地址是1.0.0.127,而在正式环境为www.baidu.com。
我们可以通过在不同的buildType下的分别打包来满足这个需求。

其中有如下几个方法:

1、修改资源文件

在不同的buildType下,我们可以定义一系列的资源文件,如string

    buildTypes {        release {            resValue("string", "server_host", "www.baidu.com")        }        debug {            resValue("string", "server_host", "1.0.0.127")        }    }

然后我们在代码里就可以直接引用:

String serverHost = getResources().getString(R.string.server_host)

2、在BuildConfig中添加成员变量

    buildTypes {        release {            buildConfigField("String", "SERVER_HOST", "\"www.baidu.com\"")        }        debug {            buildConfigField("String", "SERVER_HOST", "\"1.0.0.127\"")        }    }

然后我们可以直接在代码中引用SERVER_HOST变量:

String serverHost = BuildType.SERVER_HOST;

BuildType是一个在构建过程中自动生成的一个类,每一个构建变体都会对应一个BuildConfig类,buildType为debug类型的BuildConfig如下:

public final class BuildConfig {  public static final boolean DEBUG = Boolean.parseBoolean("true");  public static final String APPLICATION_ID = "your application id";  public static final String BUILD_TYPE = "debug";  public static final String FLAVOR = "";  public static final int VERSION_CODE = 1;  public static final String VERSION_NAME = "1.0";  // Fields from build type: debug  public static final String SERVER_HOST = "1.0.0.127";}

这种方式有个缺点是无法在manifest.xml文件中引用。