You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proguard/R8全局保留规则下排除自定义日志类的实现方案咨询

解决方案
  • 首先修改全局keep规则,直接在类匹配规则中加入自定义日志类的排除项,不需要使用-if否定规则,修改后的规则如下:
# 排除自定义日志类后保留com.mypackage下其余公共类的公共方法
-keep, allowoptimization public class !com.mypackage.MyCustomLogger, com.mypackage.** {
    public *;
}

Proguard/R8支持在类匹配规则中通过!前缀标记排除项,多个匹配项用逗号分隔,规则生效优先级为排除项 > 通配符匹配项,不会影响原有其他类的保留逻辑,也不会额外增加构建耗时。

  • 其次确认你原有的自定义日志类assumenosideeffects规则放在Proguard配置文件的靠前位置,确保R8在执行类保留规则前先识别到日志方法的无副作用标记。
  • 额外校验项:
    • 确认MyCustomLogger的v/d/i/w/e方法内部没有除日志输出外的其他业务逻辑,比如本地存储、数据上报等,否则R8会判定方法存在副作用,不会主动移除调用。
    • 仅在开启了minifyEnabled true的release构建下验证效果,debug构建默认关闭代码压缩优化,规则不会生效。

内容的提问来源于stack exchange,提问作者Monica Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:15:00