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

需求背景:在测试环境中服务器地址是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文件中引用。

你可能感兴趣的:(不同buildType下的区别构建配置方式)