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

xiaoxiao2025-05-20  49

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

转载请注明原文地址: https://www.6miu.com/read-5030384.html

最新回复(0)