1、为什么要这么做
我们一般会对log打印设置开关,debug模式打开方便调式开发,Release模式发布时关闭。APP发布后都会交给第三方进行安全扫描,往往会扫描出信息漏洞,因为打印的代码依然存在。主要包含:
- android.util.Log类的打印;
- System.out.println();Android开发一般不使用这种打印日志方式。
- java.lang.Exception, e.printStackTrace();
2、处理方式
- 首先将日志打印都封装到一个类里面集中调用,包括android.util.Log类的打印、java.lang.Exception异常信息的打印
- 然后在gradle里面的buildType配置
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
而proguard-android.txt 这个配置是无法移除log打印代码的
- 在proguard-rules.pro文件加入如下代码
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
public static *** i(...);
public static *** v(...);
public static *** println(...);
public static *** w(...);
public static *** wtf(...);
}
-assumenosideeffects class java.lang.Exception{
public *** printStackTrace(...);
}
//自己封装的log打印类
-assumenosideeffects class org.eclipse.paho.client.mqttv3.util.MqttLog {
public static *** d(...);
public static *** e(...);
public static *** i(...);
public static *** v(...);
public static *** w(...);
public static *** printStackTrace(...);
}
3、最后测试成功
参考文章
https://mp.weixin.qq.com/s/DE4gr8cTRQp2jQq3c6wGHQ?
https://blog.youkuaiyun.com/a2241076850/article/details/78391536