使用 Proguard 删除日志记录
Posted
技术标签:
【中文标题】使用 Proguard 删除日志记录【英文标题】:Remove Logging with Proguard 【发布时间】:2015-03-23 15:52:06 【问题描述】:我试图删除日志语句但没有成功。对同一问题的其他 SO 答案是指 Eclipse 或旧的 android Studio IDE (Intellij)。
build.gradle
buildTypes
release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
...
proguard-rules.pro
-assumenosideeffects class android.util.Log
public static *** d(...);
public static *** v(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
从已签名的app-release.apk
中获取源代码后仍然可以看到日志语句【问题讨论】:
【参考方案1】:build.gradle 中的更改,将默认的 proguard-android.txt 替换为 proguard-android-optimize.txt把戏。
buildTypes
release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
...
注意:gradle中默认的proguard设置是proguard-android.txt
【讨论】:
这真的拯救了我的一天!这实际上是在这里(间接)提到的:developer.android.com/studio/build/shrink-code.html#shrink-code 使用 proguard-android-optimize.txt 后出现错误 - java.lang.IllegalArgumentException: Form-encoded method must contain at least one @Field. 你的改变是什么?这段代码看起来和问题一模一样...... @JohnathanLogan 'proguard-android.txt' 到 'proguard-android-optimize.txt'以上是关于使用 Proguard 删除日志记录的主要内容,如果未能解决你的问题,请参考以下文章
如何将 proguard 配置为仅删除 android 日志记录调用
Android逆向笔记-Proguard混淆Android代码以及去打印日志信息