博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 项目中打印Log的优化
阅读量:4286 次
发布时间:2019-05-27

本文共 1481 字,大约阅读时间需要 4 分钟。

1. 项目上线后 Log 的问题

在Android开发中,我们使用android.util.Log来打印日志,方便我们的开发调试。但是这些代码不想在发布后执行,我们并不想在软件发布后调试日志被其他开发者看到,现在我的方法是设置一个全局变量,标记软件为Debug模式还是Release模式。来看下代码:

public class L {
private static final String TAG = "TangYuan"; public static boolean DEBUG = BuildConfig.DEBUG; public static void d(String msg) { if (DEBUG){ Log.d(TAG, msg); } } public static void e(String msg) { if (DEBUG){ Log.e(TAG, msg); } }}

这样打包发布之前只要改下DEBUG=false就行了,但是每次在发布之前都要手动去改这个变量,不是很方便,而且不排除开发者忘记改的情况。那么有没有更好更方便的做法呢?

2.BuildConfig.DEBUG 的妙用

好在Google为我们提供了一种新的调试机制,即BuildConfig.DEBUG。

允许开发者只在Debug模式下运行部分代码。Builds会生成一个叫做BuildConfig的类,该类包含一个名为DEBUG的常量,其常量值会依据开发者的Build类型自动设定。如此,便可以利用BuildConfig.DEBUG来实现只在Debug模式下运行的代码。

在下面的目录里会自动生成 BuildConfig 文件

这里写图片描述

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

这样只需要改动一行代码就ok了

public static final boolean DEBUG = Boolean.parseBoolean("false");

3.上线前关闭调试模式

android:debuggable="false"

4.混淆日志

平时开发中大家最常使用的就是Log日志,喜欢把一些重要数据通过日志打印出来方便查看,比如用户的账户密码打印出来,如果不关闭日志打印,这在上线后就非常容易导致敏感信息泄露。

一些程序员通过监控Log,就可以知道你这个app使用的一些关键信息。
有人说,我统一设置日志开关,上线时把日志关闭不就好了吗,其实这样做也不保险,因为逆向app的第一步就是先找Log的开关,找到开关之后,把它打开,再跑一遍程序,就很容易找到隐私信息,因此建议安全性较高的app,尽量还是通过混淆把Log的所有信息去掉。

你可能感兴趣的文章
iOS之view的背景绘制渐变色、文字渐变
查看>>
PHP之thinkPHP(一)
查看>>
iOS之UIFont字体设置
查看>>
nodejs理论基础
查看>>
iOS 之iIOS11更新 导航返回按钮偏移的问题。、导航基类
查看>>
iOS pop到navigation栈中的指定控制器
查看>>
iOS NSClassFromString(字符串)自动抓换成类名
查看>>
iOS 键盘右上角完成按钮自定义
查看>>
javascript之(一)
查看>>
javascript之(二)DOM
查看>>
iOS 之字段排序并且SHA1加密
查看>>
iOS 之MBProgressHUD的简单封装常用
查看>>
javascript之(三)BOM浏览器对象
查看>>
javascript之(四)作用域链,闭包
查看>>
javascript之(五)面下个对象
查看>>
javascript之(六)正则表达式
查看>>
Git使用之码云的操作步骤、忽略文件
查看>>
javascript之贪吃蛇案例
查看>>
iOS 吧一个控制器的vie我添加到另外一个控制器中的注意事项
查看>>
javascript 之AJAX(一)
查看>>