您的位置:首页 > 移动开发 > Android开发

Android输出Log优化

2016-07-21 11:25 405 查看
众所周知,我们在很多情况下回使用输出Log的方式进行调试,但是却有很多人在使用完Log之后不删除Log,导致控制台积累的Log越来越多,便使得Log在产品发布的时候暴露出去了,一些简单的信息可能没有关系,但是很多程序员在调试的时候,涉及到账户,有可能会打印出Token,及账户的唯一标示等重要不可泄密的信息,所以对Log的改造变得有点迫不及待了。

Android编译无非分为2种,一种是Debug即调试模式,另一种是Release即正式打包模式。在Android Studio最左侧下有个Build Variant中可以选择Module的编译模式,根据选择的模式的不同,系统会自动生成一个文件BuildConfig.java,里面有一个boolean类型的字段DEBUG,在Debug模式下DEBUG = true,反之为false。

所以我们可以自己写一个自定义Log类,根据这个DEBUG字段来判断是否输出Log,这样就不会导致在发布的产品中附带Log的错误。

自定义Log代码如下:

package com.jym.customlog.utils;

import android.util.Log;

import com.jym.customlog.BuildConfig;

/**
* Created by Jimmy on 2016/7/21 0021.
*/
public class CustomLog {

public static void v(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.v(tag, msg);
}
}

public static void e(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.e(tag, msg);
}
}

public static void d(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.d(tag, msg);
}
}

public static void i(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.i(tag, msg);
}
}
}


问:可以不是使用系统的DEBUG字段,使用自己定义的字段吗?

答:当然可以,这时我们需要在app的build.gradle中配置,示例代码如下:

signingConfigs {

debug {
keyAlias '????????'
keyPassword '????????'
storeFile file('xxxxxxxx.keystore')
storePassword '????????'
}

release {
keyAlias '?????????'
keyPassword '?????????'
storeFile file('xxxxxxxx.keystore')
storePassword '?????????'
}

}

buildTypes {

debug {
signingConfig signingConfigs.debug //指定keystore
buildConfigField "boolean", "LOG_DEBUG", "true" // 自定义LOG_DEBUG
}

release {
minifyEnabled false
signingConfig signingConfigs.release //指定keystore
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "boolean", "LOG_DEBUG", "false" // 自定义LOG_DEBUG
}
}


这样BuildConfig会生成一个字段LOG_DEBUG,使用LOG_DEBUG代替DEBUG,即达到想要的效果啦~~

最后,祝大家越来越好~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 调试 Log