保留规则的Proguard/R8异常



我正在尝试使用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规则,我的问题是:如何为这个keep规则指定异常我知道-if选项,但我还没有在任何地方看到它被用于否定。我曾尝试在-keep规则之前编写-if class !com.mypackage.Logger,但构建过程花费了大量的时间,而且始终无法完成。

我找到了答案,我需要在keep规则中添加Logger类,如下所示:

-keep, allowoptimization public class !com.mypackage.MyCustomLogger, com.mypackage.** {
public *;
}

最新更新