使用 Pusher 库时缺少类 org.slf4j.impl.StaticLoggerBinder (引用自:void org.slf4j.LoggerFactory.bind() 和其他 3 个上下文)

问题描述 投票:0回答:2

启用 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
构建时不会出现任何问题

android android-build android-r8
2个回答
21
投票

通过添加以下规则修复:

##---------------Begin: proguard configuration for Pusher Java Client  ----------
-dontwarn org.slf4j.impl.StaticLoggerBinder
##---------------End: proguard configuration for Pusher Java Client  ----------

0
投票

您可能正在使用一些添加此规则的依赖项

-keep org.slf4j.impl.StaticLoggerBinder
(在我的例子中,它是 Algolia,它对 Ktor 客户端有传递依赖)。由于混淆器规则是“可添加的”,所以所有规则都会添加到最终的应用程序规则中。这个-keep规则也被添加到最终规则中。
现在可能是 Android 编译时类路径中没有该类(因为这些记录器工厂需要通过服务加载器机制添加)。这就是您收到此错误的原因

在这里添加

-dontwarn org.slf4j.impl.StaticLoggerBinder

是安全的事情

    

© www.soinside.com 2019 - 2024. All rights reserved.