Android Studio混淆打包自动删除log打印代码

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.csdn.net/a2241076850/article/details/78391536

你可能感兴趣的:(Android Studio混淆打包自动删除log打印代码)