在Android中进行屏蔽日志,有两种实现形式,一种是在编译期屏蔽,另一种则是从运行时进行屏蔽,后者相对比较常见,从后向前介绍。
运行时屏蔽
在运行时屏蔽日志,通常的做法是创建一个自定义的类,比如
DroidLog
public class DroidLog {
private static final boolean ENABLE_LOG = true;
public static void i(String tag, String message)
{
if (ENABLE_LOG) {
android.util.Log.i(tag, message);
}
}
}
在编码时,我们调用DroidLog.i方法来记录日志,然后在打包时,修改ENABLE_LOG的值为false,这样就能屏蔽了日志输出。
然后运行时屏蔽的方案实际上有一点小问题,比如
private void dumpDebugInfo() {
DroidLog.i(LOGTAG, "sdkVersion=" + Build.VERSION.SDK_INT + "; Locale=" + Locale.getDefault());
}
虽然上面的日志不会打印,但是
"sdkVersion=" + Build.VERSION.SDK_INT + "; Locale=" + Locale.getDefault()
这段字符串拼接语句却实实在在执行了。总的来说,还是会产生一些影响。