Firebase + Proguard/R8
Posted
技术标签:
【中文标题】Firebase + Proguard/R8【英文标题】: 【发布时间】:2020-05-16 23:37:42 【问题描述】:我目前正在我的项目中设置 Firebase (FCM),但在运行我的 R8 混淆应用时遇到了问题,Firebase 服务 (FirebaseMessagingService) 不再工作。有没有人遇到过同样的问题?有什么解决办法吗?
UPD:最后我通过降级为 FCM 修复了它
com.google.firebase:firebase-messaging:15.0.0
现在有一些不推荐使用的类,但它可以工作。
UPD2: 在使用最新版本的库运行混淆应用时,我还注意到日志中的警告:
W/FA: Failed to retrieve Firebase Instance Id
这很可能是问题的根源。
【问题讨论】:
您的相关 build.gradle 条目、proguard/r8 配置以及您遇到的错误可能会有所帮助。 @SebRut 这可以通过基本 FCM 配置 recommended by Google 重现。我开始了一个新的 android Studio 项目并在其中集成了 Firebase,但问题仍然存在,Firebase 控制台看不到混淆构建,我只是无法完成 Firebase 设置的最后一步。并且由于 R8 混淆机制从库本身获取规则,因此不再需要 proguard 配置文件。 【参考方案1】:终于解决了,下一个 proguard 规则对我有用:
# Firebase
-keep class com.google.android.gms.** *;
-keep class com.google.firebase.** *; // especially this one
【讨论】:
【参考方案2】:只需查看 R8 在构建日志中抛出的投诉......然后按照说的去做。仅仅因为它可能为库本身提供配置,并不意味着它为您的应用程序代码提供配置。还要确保在 Firebase 控制台中添加了释放密钥的指纹。
【讨论】:
以上是关于Firebase + Proguard/R8的主要内容,如果未能解决你的问题,请参考以下文章
无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2
没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()
如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”