android中的BuildConfig

本文详细介绍了BuildConfig类在Android开发中的作用及其自动生成机制。通过BuildConfig可以方便地切换应用程序的日志输出状态,使得开发者能够在debug和release模式下灵活控制日志的输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:http://blog.youkuaiyun.com/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成员变量来控制了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值