保留规则的 Proguard/R8 例外
Posted
技术标签:
【中文标题】保留规则的 Proguard/R8 例外【英文标题】:Proguard/R8 exception to a keep rule 【发布时间】:2021-12-23 18:13:13 【问题描述】:我正在尝试使用 R8/Proguard 删除日志记录,并且我使用了
-assumenosideeffects class android.util.Log
v(...);
d(...);
i(...);
w(...);
e(...);
效果很好。尝试删除com.mypackage
中的自定义登录时出现的问题:
-assumenosideeffects class com.mypackage.MyCustomLogger
v(...);
d(...);
i(...);
w(...);
e(...);
我有一条规则,将公共类的所有公共方法都保留在com.mypackage
:
-keep, allowoptimization public class com.mypackage.**
public *;
由于项目范围,我无法删除。此规则似乎覆盖了 assumenosideeffects
规则,这是我的问题:我如何指定此保留规则的例外情况?我知道 -if
选项,但我在任何地方都没有看到它用于否定。我曾尝试在 -keep
规则之前编写 -if class !com.mypackage.Logger
,但构建需要花费大量时间并且永远不会完成。
【问题讨论】:
【参考方案1】:我找到了答案,我需要像这样在保留规则中添加我的 Logger 类:
-keep, allowoptimization public class !com.mypackage.MyCustomLogger, com.mypackage.**
public *;
【讨论】:
以上是关于保留规则的 Proguard/R8 例外的主要内容,如果未能解决你的问题,请参考以下文章