【问题标题】:Proguard/R8 exception to a keep rule保留规则的 Proguard/R8 例外
【发布时间】: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,但构建需要花费大量时间并且永远不会完成。

【问题讨论】:

    标签: android exception logging proguard android-r8


    【解决方案1】:

    我找到了答案,我需要像这样在保留规则中添加我的 Logger 类:

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

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 2019-10-03
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2023-01-01
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多