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代码如下:
问:可以不是使用系统的DEBUG字段,使用自己定义的字段吗?
答:当然可以,这时我们需要在app的build.gradle中配置,示例代码如下:
这样BuildConfig会生成一个字段LOG_DEBUG,使用LOG_DEBUG代替DEBUG,即达到想要的效果啦~~
最后,祝大家越来越好~
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,即达到想要的效果啦~~
最后,祝大家越来越好~
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories