你应该知道的 BuildConfig

2,347 阅读2分钟
原文链接: facex.xyz

可能有些人不知道BuildConfig是何物,尤其是初学者,那么试想我们每次编译Release版本时,由于Debug和Relaease环境下配置有所不同,打包前总是要禁用调试Log,修改服务器Host从测试服到正式服等等一系列操作,一般的做法是在编译Release版本前修改相应的配置,开发时再修改回Debug环境。很繁琐有没有?

转载请注明出处:www.facex.xyz,如有发现错误或有其他更好的实现方式可与我联系。

在编译时,Android Studio 会生成一个名为 BuildConfig 的类,它包含了一些编译时使用到的常量指。生成的BuildConfig文件内容如下:

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true|false");
  public static final String APPLICATION_ID = "xyz.facex.demo";
  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";
}

当编译Debug版本时,BuildConfig类中DEBUG变量如下:

public static final boolean DEBUG = Boolean.parseBoolean("true");

当编译Release版本时,BuildConfig类中DEBUG变量如下:

public static final boolean DEBUG = Boolean.parseBoolean("false");

是的,看到这里,我想你应该知道了。

现在我们举个栗子说明下,新建HttpHost类,用来获取服务器Host,我们将BuildConfig类中DEBUG变量赋值给HttpHost的DEBUG,然后我们通过判断HttpHost中DEBUG的值取到相应的Host,代码如下:

public class HttpHost {
    public static final boolean DEBUG = BuildConfig.DEBUG;
    public static final String HOST_TEST = "测试服务器地址";
    public static final String HOST = "正式服务器地址";
    /**
     * 根据不同版本调用不同的HOST
     * debug版本返回"测试服务器地址"
     * release版本返回"正式服务器地址"
     */
    public static String getHost() {
        return DEBUG ? HOST_TEST : HOST;
    }
}

按照以上代码,我们在发布Release版本时无需修改一行代码,一个字

另外BuildConfig中的变量还支持自定义,有兴趣的可以自行Google。

下一篇:使用高德地图模拟运动轨迹