您的位置:首页 > 产品设计 > UI/UE

关于android中的BuildConfig

2016-07-21 17:16 423 查看
版本: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成员变量来控制了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: