iOS 上的 Firebase Crashlytics 设置?

Posted

技术标签:

【中文标题】iOS 上的 Firebase Crashlytics 设置?【英文标题】:Firebase Crashlytics setup on iOS? 【发布时间】:2018-05-31 17:17:26 【问题描述】:

我正在尝试将 Firebase Crashlytics 集成到我的 ios 应用中,该应用启用了 Firebase 崩溃报告。我遵循了文档here,但是在运行自定义构建阶段时我的构建总是失败:

"$PODS_ROOT/Fabric/run"

Xcode中的错误如下:

错误:Fabric:配置问题

Fabric API 密钥无效。您的 Fabric 运行脚本构建阶段应包含您的 API 密钥: ./Fabric.framework/运行 INSERT_YOUR_API_KEY INSERT_YOUR_BUILD_SECRET

我没有 Fabric API 密钥,我认为 Firebase 库应该注意他们的 Fabric 密钥。我的项目中有 Info.plist,Firebase 功能齐全,但我无法通过 Fabric 运行阶段。非常感谢任何有关如何解决此问题的帮助!

【问题讨论】:

错误信息很清楚,你必须得到一个API Key 我是这么想的,但是文档清楚地表明您不需要 API 密钥。我终于找到了解决方案,OSX 上的 Fabric.app 会自动在脚本读取的 app-info.plit 文件中设置您的 Fabric api 密钥,如果您不提供它,则会失败。从 info.plist 中删除这个表单,脚本就可以正常工作了。 我错过了在 AppDelegate 中添加 FirebaseApp.configure()。添加后,它工作得很好。 【参考方案1】:

终于想通了,发给可能被同样问题困扰的人。

如果您尝试通过 OSX Fabric.app 安装 Fabric,或者您过去使用过 Fabric Crashlytics,那么它会将您的 Fabric API 密钥添加到您的 Info.plist, Fabric 初始化构建脚本试图读取的内容(我猜)。

删除Fabric 键形成Info.plist 后,脚本即可工作,无需任何键/参数。

Firebase 文档应包含关于此的 sn-p 警告。

【讨论】:

我遇到了完全相同的问题,我关注了您的帖子并删除了 API 密钥。现在可以了。但是,崩溃没有记录在 Firebase 上。知道为什么会发生吗? 遗憾的是没有。它不会记录在 Firebase 中。但它说崩溃已经上传。 ` : [Firebase/Crash][I-CRA100002] 崩溃上传成功:( 1e21a90b1c000000 )` 对于我的项目,必须取消 Fabric 与 Crashlytics 的链接,并且必须执行上述所有操作才能使崩溃日志出现在 Firebase 仪表板中。这似乎只是 iOS 的问题。 轰隆隆!这对我有用!只是想清理我的项目,为 2019 年的全面转型做准备 大家好,我正在将 iOS 应用程序从 Fabric 迁移到 Firebase,并面临类似问题。我的问题是“我们是否需要删除结构初始化(来自AppDelegate)和结构密钥(来自Info.plist)?”如果我们删除它,那么Firebase 就不会崩溃。如果我们不删除它,为什么我们需要将Firebase添加到应用程序中?我的意思是通过将应用程序链接到 Firebase 我们将得到所有的崩溃。【参考方案2】:

如果您密切关注Getting Started 文档,您可能会遇到一些挫折。相信我。我有我的份额。

现在我可以和你分享一下。

    如果您之前为该目标拥有 Fabric RunScript,那么最好删除该目标并创建一个新的,应用 GettingStarted instruction,并将 $(INFOPLIST_PATH) 替换为 GoogleService-Info.plist

    您的 Info.plist 文件中不应再有 Fabric 配置。就是这个东西:<key>Fabric</key><dict>...</dict>。如果你还有这种感觉,是时候说再见了,放下那些感觉,或者面对this issue。

    如果您一直在 Xcode 控制台中看到此问题,[Fabric] failed to download settings Error Domain=FABNetworkError Code=-5... blah blah blah,请先清理该构建文件夹 (shift + cmd + k)。

如果您的下一个构建工作正常,请尝试 force crashing 您的应用并查看 Firebase 上的崩溃日志。

这是我的堆栈:Xcode 10.2.1 | 面料 1.9 | Crashlytics 3.12

【讨论】:

用 GoogleService-Info.plist 替换 $(INFOPLIST_PATH) 修复了它的形式 我坚信他应该工作,但不,它没有......【参考方案3】:

对我来说,问题是我之前使用的是旧的 Fabric,我不得不从我的 info.plist 中删除密钥

【讨论】:

【参考方案4】:

我按照https://fabric.io/kits/ios/crashlytics/install 文档添加了运行脚本并更新了Info.plist,但仍然遇到上述问题。

显然,我不小心添加了两次“新运行脚本阶段”。删除不必要的“运行脚本”后项目编译成功。

Xcode 10.1 面料 1.7.5 Crashlytics 3.10.4

【讨论】:

【参考方案5】:

Documentation

如果您的项目中已经设置了 crashlytics(在迁移的情况下),

    从 Info.plist 中删除结构键(需要删除字典和 Fabric 的键) 关注 文档。(只需要在构建阶段的运行脚本中使用"$PODS_ROOT/Fabric/run",而不是"$PODS_ROOT/Fabric/run" key1 key2

如果您的项目中尚未设置 crashlytics(开始与 firebase crashlytics 的全新集成),只需按照 文档。

【讨论】:

【参考方案6】:

如果您使用 Crashlytics,您可能需要进入您的 Build Phases -> Crashlytics configuration 并将其添加到 shell/bin/sh 部分,如下所示:`set -e

如果 [[ $PODS_ROOT ]];然后 echo "info: Exec Fabric 从 Pod 运行" "$PODS_ROOT/Fabric/run" 您的密钥 别的 回声“信息:从框架执行结构运行” "$PROJECT_DIR/Fabric.framework/run" 您的密钥 菲`

【讨论】:

以上是关于iOS 上的 Firebase Crashlytics 设置?的主要内容,如果未能解决你的问题,请参考以下文章