APP开发实战128-APP Log功能设计

31 Log功能设计

31.1Log输出控制

1 debug版本输出log,release版本不输出log

A 通过BuildConfig.DEBUG的值控制是否输出log

publicclass MyLog {

private static final String    TAG    = "MyApp";

public static void v(String tag,String msg){

if(BuildConfig.DEBUG){

if(tag == "") {

Log.v(TAG, msg);

}else {

Log.v(tag, msg);

}

}

}

}

B在混淆配置文件中,将类Android.util.Log的方法设置为无效代码:

-assumenosideeffectsclassAndroid.util.Log {

publicstatic int v(...);

publicstatic int i(...);

public static int w(...);

publicstatic int d(...);

publicstatic int e(...);

}

这种方式不仅可以控制release版本不输出log,还能减小release版本的体积。

需要注意的是,在混淆配置文件中不能有关闭优化的配置-dontoptimize,否则上述方法将无效。

(在最新的Android Studio和Gradle编译环境中,这种方式无效)

2 debug版本输出log,release版本只在特定场景下输出log

通过特定变量的值控制是否输出log。

如在debug版本中,IsEnableLog的值为true;在release版本中默认为false,但通过特别的方式,如连续多次点击某个区域,IsEnableLog的会变为true,这样在release版本中,也可以输出log。

(有时会出现debug版本没有问题,但release版本有问题,这样方便对release版本调试和解决问题)

publicclass MyLog {

private static final String    TAG    = "MyApp";

public static void v(String tag,String msg){

if(IsEnableLog){

if(tag == "") {

Log.v(TAG, msg);

}else {

Log.v(tag, msg);

}

}

}

}

你可能感兴趣的:(APP开发实战128-APP Log功能设计)