android中的BuildConfig

来源:互联网 发布:windows搜索索引 编辑:程序博客网 时间:2024/05/29 03:21

原文链接:http://blog.csdn.net/pony_maggie/article/details/51984819

版本:Android stuido 2.2

什么是BuildConfig

BuildConfig其实是个Java类,在我们编译android工程时它自动生成。类的实现基本是下面这样的:

public final class BuildConfig{    public BuildConfig()    {    }    public static final boolean DEBUG = false;    public static final String APPLICATION_ID = "com.example.mylibrary";    public static final String BUILD_TYPE = "release";    public static final String FLAVOR = "";    public static final int VERSION_CODE = 1;    public static final String VERSION_NAME = "1.0";}

这个类的源码一般在

app\build\generated\source\buildConfig\debug\包名…

BuildConfig的作用

BuildConfig最常用的功能应该作为日志开关。大部分时候我们希望程序在debug模式下可以输出日志,而release时不输出。

官方文档有这样一段话:

Added a feature that allows you to run some code only in debug mode. Builds now generate a class called BuildConfig containing a DEBUGconstant that is automatically set according to your build type. You can check the (BuildConfig.DEBUG) constant in your code to run debug-only functions.

当然实现这种功能方法很多,我们完全可以自己实现一个MyLogUtil类增加一个开关变量来控制,比如;

public class MyLogUtil {    private static final boolean DEBUG = true;    public static void i(String tag, String msg) {        if (DEBUG)            android.util.Log.i(tag, msg);    }    public static void e(String tag, String msg) {        if (DEBUG)            android.util.Log.e(tag, msg);    }    //....}

在程序发布时把DEBUG变量改为false即可。但是这样其实不太方便,还要手动改代码,万一忘记了呢??

BuildConfig中的DEBUG字段会根据当前工程设置的编译选择自动的赋值,省去了手动改的麻烦,所以我们的程序变为这样:

if (BuildConfig.DEBUG) {    Log.d("", "I am a debug");} else {    Log.d("", "I am a release!");}

后计

我自己封了个jar包,然后被别的app调用,发现jar包里的buildconfig.debug总是false。一直未解决。后来还是决定用一个DEBUG成员变量来控制了。

原创粉丝点击