Android Studio通过配置build.gradle参数设置全局的Log开关

Android Studio通过配置build.gradle参数设置全局的Log开关

在app中的build.gradle中,在编译后会生成一个BuildConfig的类,这个类包含了一些当前编译类型的基本参数。如:

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

这样,我们就可以通过其中的build的debug和release版本参数不同,来全局控制log的显示开关。如:

public class LogUtils {
    public static boolean debug = BuildConfig.DEBUG;

    public static void e(String tag, String message) {
        if (debug) {
            Log.e(tag, message);
        }
    }
    public static void e(String message) {
        e("error", message);

    }

    public static void w(String tag, String message) {
        if (debug) {
            Log.w(tag, message);
        }
    }

    public static void w(String message) {
        w("warn", message);
    }

    public static void i(String tag, String message) {
        if (debug) {
            Log.i(tag, message);
        }
    }

    public static void i(String message) {
        i("info", message);
    }

    public static void d(String tag, String message) {
        if (debug) {
            Log.d(tag, message);
        }
    }

    public static void d(String message) {
        d("debug", message);
    }

    public static void v(String tag, String message) {
        if (debug) {
            Log.v(tag, message);
        }
    }

    public static void v(String message) {
        v("verbose", message);
    }
}

BuildConfig中的DEBUG参数其实是通过debuggable参数来控制的,一般debug类型apk是默认BuildConfig.DEBUG为true,release类型BuildConfig.DEBUG为false。

buildTypes {
        release {
            ...
            debuggable false    //默认false,可不写
        }
        debug {
            ...
            debuggable true     //默认true,可不写
        }
    }

当然也可以通过其他的参数作为控制Log的变量,如BuildConfig.BUILD_TYPE,这个变量表示当前编译的是debug版本还是release版本。

当然我们还可以在build.gradle中自定义一个变量控制,如:

buildTypes {
        release {
            ...
            //会在BuildConfig这个类中生成一个变量,变量名为LOG_DEBUG,值为false
            buildConfigField("boolean", "LOG_DEBUG", "false")    
        }
        debug {
            ...
            buildConfigField("boolean", "LOG_DEBUG", "true")
        }
    }

我们在build.gradle的buildTypes中给buildConfigField参数设置属性值。他会在BuildConfig这个类中自动生成一个变量,变量名为LOG_DEBUG,值会根据buildTypes中的编译类型选择,如:debug版本为true,release版本为false。

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.example.demo";
  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";
  // Fields from build type: debug
  public static final boolean LOG_DEBUG = true;//debug版本
}

你可能感兴趣的:(android,studio)