启用 R8 (
isMinifyEnabled = true
) 并使用 "com.pusher.pusher-java-client:2.4.4"
库,我在发布版本中收到以下错误:
AGPBI:{“kind”:“error”,“text”:“运行时检测到缺少类 R8。请添加缺少的类或应用额外的保留规则 生成于 项目 pp uild\outputs\mapping\devRelease\missing_rules.txt。","sources":[{}]} AGPBI: {"kind":"错误","text":"缺少类 org.slf4j.impl.StaticLoggerBinder(引用自:void org.slf4j.LoggerFactory.bind() 和其他 3 个 contexts)","sources":[{}],"tool":"R8"} 检测到缺少类 运行R8。请添加缺少的课程或申请额外保留 生成的规则 项目 pp uild\outputs\mapping\devRelease\missing_rules.txt。
缺少类org.slf4j.impl.StaticLoggerBinder(引用自:void org.slf4j.LoggerFactory.bind() 和其他 3 个上下文)
如何解决?使用
isMinifyEnabled = false
构建时不会出现任何问题
通过添加以下规则修复:
##---------------Begin: proguard configuration for Pusher Java Client ----------
-dontwarn org.slf4j.impl.StaticLoggerBinder
##---------------End: proguard configuration for Pusher Java Client ----------
您可能正在使用一些添加此规则的依赖项
-keep org.slf4j.impl.StaticLoggerBinder
(在我的例子中,它是 Algolia,它对 Ktor 客户端有传递依赖)。由于混淆器规则是“可添加的”,所以所有规则都会添加到最终的应用程序规则中。这个-keep
规则也被添加到最终规则中。现在可能是 Android 编译时类路径中没有该类(因为这些记录器工厂需要通过服务加载器机制添加)。这就是您收到此错误的原因
在这里添加
-dontwarn org.slf4j.impl.StaticLoggerBinder
是安全的事情