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’)。”

Firebase 持久化,清除 Firebase 缓存

Firebase 存储不会下载并添加到 firebase 数据库

将 Firebase 身份验证与 Firebase 数据库连接