Firebase Crashlytics 在没有 Fabric API 密钥的情况下无法工作

Posted

技术标签:

【中文标题】Firebase Crashlytics 在没有 Fabric API 密钥的情况下无法工作【英文标题】:Firebase Crashlytics not working without Fabric API key 【发布时间】:2019-01-01 00:00:21 【问题描述】:

我有一个安装了 Fabric Crashytics 的安卓应用。我按照官方指南设置 Firebase Crashlytics 并将 Fabric 和 Firebase 帐户关联起来(AFAIK Firebase 最近收购了 Fabric)。 所以特别是我在manifest.xml 中删除了带有<meta-data/> 标签的Fabric API 密钥。

然后我尝试进行测试崩溃,但它既没有出现在 Firebase 也没有出现在 Fabric 仪表板中,但是我在 logcat 中获得了成功日志:Crashlytics report upload complete: <ID>

当我嗅探网络时,我似乎收到了来自 Crashlytics 的 403 Unathorized。但是,当我在 <meta-data/> 标记中添加 Fabric API 密钥时,它可以工作,并且我看到了崩溃报告。

请帮我看看我的配置有什么问题,如果我使用的是新的 Firebase Crashlytics,为什么我需要使用旧的 Fabric API key 而文档没有说明这一点。

【问题讨论】:

这里是来自 Firebase 的 Mike。在设置时,您是选择此应用是 Crashlytics 的新应用还是现有的 Crashlytics 应用? @MikeBonnell 我选择它是一个现有的 Crashlytics 应用,然后几分钟后,来自 Fabric 的所有报告都在 Firebase 上可见 很好,如果它是一个已经使用 Fabric 中的 Crashlytics 的应用程序,那么您应该选择该选项。 @MikeBonnell 我最初是在设置 sdk 时这样做的,但是尽管在 firebase 控制台中显示了报告,但如果没有 Fabric API 密钥,它就无法工作 如果您选择它是一个现有的 Crashlytics 应用程序,那么我们希望出现 Fabric API 密钥。 【参考方案1】:

对于那些在 ios 上使用 Fabric 的人,这就是我最终从支持中得到的。我想重新开始。

访问https://firebase.google.com/docs/crashlytics/get-started?authuser=1#ios。 相应地修改 Podfile 中的 pod(按照说明指定 Fabric 和 Crashlytics 的版本) 更新构建阶段运行脚本:“$PODS_ROOT/Fabric/run”,而不是指向其 Fabric API 密钥的当前脚本

从 Info.plist 中删除 API 密钥 - 在 AppDelegate.swift 中,删除 import Fabric 和 import Crashlytics 以及任何 Fabric.with 语句,保留 import Firebase 并改用 FirebaseApp.configure()

李>

转到 Firebase 控制台中的项目设置,单击“集成”选项卡,从 Firebase 取消链接相应的 Fabric 应用程序(如果不这样做,您将收到类似于以下内容的错误:“[Fabric] 下载失败设置错误域=FABNetworkError Code=-5")

转到 Crashlytics 选项卡,您应该会看到您必须再次加入 Firebase Crashlytics。 通过这些步骤选择“此应用未安装 Crashlytics”,当您到达最后一步时,构建并运行应用并等待几秒钟。然后将设置您的 Crashlytics 选项卡。

一旦我这样做了,并且强制崩溃了,它终于出现了。

【讨论】:

从 plist 中移除 API 密钥是关键。感谢您发布答案。 搜索了几天后,从 Firebase 中取消链接 Fabric 终于解决了我的 ios 问题。谢谢【参考方案2】:

如果您从现有 Fabric crashlytic 应用程序迁移到 Firebase crashlytic,则以下内容是强制性的

<meta-data
          android:name="io.fabric.ApiKey"
            android:value="xxxxxxxxxxxxxxxxxxxxxxxxxx"
            />
 Fabric.with(new Crashlytics()));

但不确定这些 API 和 KEY 会发生什么,一旦 Fabric 宕机,比如 2019 年年中。

【讨论】:

没错,新文档说迁移时不应更改项目中的 Crashlytics/Fabric 设置。在此基础上添加 Firebase 服务是可以的。一旦新的 SDK 可用,我们似乎需要检查更新并进行实际的 Crashlytics 迁移。【参考方案3】:

Firebase Crash Reporting 将被 Fabric Crashlytics 取代,而不是相反...目前似乎仍然存在对 firebase-crash 的一些依赖,这可能会在未来的版本中被删除。

https://firebase.google.com/docs/crashlytics/upgrade-from-crash-reporting

^ 尽管那里显示“Firebase Crashlytics”,但它可能仍然是“Fabric Crashlytics”。

【讨论】:

我猜结果肯定是相反的! @mahee96 那时候好像……好像。

以上是关于Firebase Crashlytics 在没有 Fabric API 密钥的情况下无法工作的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics-Firebase 崩溃报告没有意义[重复]

如何在 iOS 上使用 Firebase 以编程方式获取 Crashlytics 版本

Firebase Crashlytics 在没有 Fabric API 密钥的情况下无法工作

有没有办法让 Firebase Crashlytics 在远程服务中工作?

Firebase Crashlytics 没有在控制台仪表板中快速显示崩溃报告

为什么新的Firebase Crashlytics(没有Fabric)在Android中不起作用?