通过AS中BuildConfig.DEBUG字段用来自定义调试Log

来源:互联网 发布:物流软件系统 编辑:程序博客网 时间:2024/06/03 19:30

BuildConfig.DEBUG

首先在Gradle脚本中默认的debug和release两种模式BuildCondig.DEBUG字段分别为true和false,而且不可更改。该字段编译后自动生成,在Studio中生成的目录在app/build/source/BuildConfig/Build Varients/package name/BuildConfig 文件下。我们以9GAG为例来看下release模式下该文件的内容:


public final class BuildConfig {  public static final boolean DEBUG = false;  //...  public static final boolean IS_SHOW_DEBUG = false;}

自定义BuildConfig字段

大家看到上述内容的时候发现莫名的有个IS_SHOW_DEBUG字段,这个完全是我自定义的一个字段,我来用它控制Log的输出,而没有选择用默认的DEBUG字段。举例一个场景,我们在App开发用到的api环境假设可能会有测试、正式环境,我们不可能所有的控制都通过DEBUG字段来控制,而且有时候环境复杂可能还会有两个以上的环境,这个时候就用到了Gradle提供了自定义BuildConfig字段,我们在程序中通过这个字段就可以配置我们不同的开发环境:

在app的build.gradle配置如下:

buildTypes {        release {            minifyEnabled false            buildConfigField "boolean", "IS_SHOW_LOG", NOT_SHOW_LOG            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            buildConfigField "boolean", "IS_SHOW_LOG", SHOW_LOG        }        preview {            minifyEnabled false            buildConfigField "boolean", "IS_SHOW_LOG", SHOW_LOG        }    }
其中SHOW_LOG和NOT_SHOW_LOG在gradle.properties中声明:

org.gradle.jvmargs=-Xmx1024mSHOW_LOG trueNOT_SHOW_LOG false

点击项目重新build一下,下面就可以写app你想要的日志输出了:

public class MyLog {    public static int i(String tag, String msg) {        if (BuildConfig.IS_SHOW_LOG) {            return Log.i(tag, msg);        } else {            return -1;        }    }    public static int i(String tag, String msg, Throwable tr) {        if (BuildConfig.IS_SHOW_LOG) {            return Log.i(tag, msg, tr);        } else {            return -1;        }    }        public static int v(String tag, String msg) {        if (BuildConfig.IS_SHOW_LOG) {            return Log.v(tag, msg);        } else {            return -1;        }    }    public static int v(String tag, String msg, Throwable tr) {        if (BuildConfig.IS_SHOW_LOG) {            return Log.v(tag, msg, tr);        } else {            return -1;        }    }    //等等其他你想打印的方法.... }


原创粉丝点击