Firebase crashlytics 未在 iOS 中初始化

Posted

技术标签:

【中文标题】Firebase crashlytics 未在 iOS 中初始化【英文标题】:Firebase crashlytics is not initialized in iOS 【发布时间】:2020-09-02 08:47:11 【问题描述】:

在我们的项目中,我们使用了结构来报告崩溃,之后我们使用 firebase 迁移了结构,并且由于 firebase 处于测试阶段,因此没有删除结构。现在我们正在尝试删除整个代码中的结构和 crashlytics 依赖项:

#pod 'Fabric', '1.10.2'
#pod 'Crashlytics', '3.14.0'

并为 Firebase Crashlytics 使用了以下依赖项。

pod 'FirebaseCrashlytics', '4.5.0'
pod 'FirebaseAnalytics', '6.8.0'
pod 'FirebaseCore', '6.10.1'
pod 'FirebaseMessaging', '4.6.2'

为了初始化 crashlytics,我在构建阶段添加了脚本:

“$PODS_ROOT/FirebaseCrashlytics/run”

输入文件:

$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Resources/DWARF/$TARGET_NAME $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

我们已经在结构集成期间将崩溃置于暂存/生产环境中,因此在迁移 firebase 时,所有崩溃都得到了配置。但是当我放置新的崩溃时,崩溃并没有添加到暂存/生产环境中的 crashlytics 报告中。

当我在开发环境中运行应用程序并崩溃时,crashlytics 没有得到配置。

对于开发:

参考:https://firebase.google.com/docs/crashlytics/get-started?authuser=0

注意:我可以使用织物放置崩溃: $

PODS_ROOT/Fabric/运行 API_KEY BUILD_SECRET

【问题讨论】:

尝试从模拟器或设备而不是 Xcode 运行应用程序,因为您必须在运行时分离调试器才能使 crashlytics 工作,如前所述here 谢谢,@KishanBhatiya。我尝试运行上面提到的应用表单设备,但仍然没有配置。 but still, it's not configured 是什么意思? 仍然显示“添加 SDK,然后构建、运行和崩溃您的应用查看 SDK 文档。我们将监听您的应用与我们的服务器通信。” 非常感谢@KishanBhatiya。我现在可以在 5 分钟后看到崩溃。 【参考方案1】:

由于某种原因,遵循 Firebase 文档对我不起作用,因为我必须做一些额外的事情才能让“添加 SDK”加载屏幕在 Firebase 门户上消失并向我显示崩溃。

除了Firebase docs 所说的之外,我还借助answer 做了以下操作

    转到构建设置 -> 调试信息格式 -> 使用 dSYM 文件将它们全部设置为 DWARF 转到构建阶段 -> 添加额外的运行脚本并输入以下内容
$PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp $PROJECT_DIR/Your_path/GoogleService-Info.plist -p ios $DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME

记得为您的项目适当地替换 Your_path

    按照here 的描述在您的应用程序中设置崩溃

    将您的设备/模拟器与调试器断开连接,AKA 自行启动它,而不是从 XCode 运行它然后执行崩溃

    我现在可以看到上面的加载消失了,我可以看到我的崩溃统计信息

【讨论】:

【参考方案2】:

如Firebase Docs 中所述,当您使用 Xcode Simulator 运行应用程序时,还会创建包含干扰 Crashlytics 的调试器的应用程序的初始实例。使用调试器,Crashlytics 看不到崩溃。因此,您必须分离调试器并直接从模拟器或设备运行应用程序。

【讨论】:

以上是关于Firebase crashlytics 未在 iOS 中初始化的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics vs Fabric vs Firebase 崩溃报告——我迷路了

Crashlytics 在运行时未在 crashlytics.properties 中找到 API 密钥

Crashlytics 未在“存档”模式下上传符号

firebase_crashlytics 已解析为 2.2.1,这取决于 Firebase/Crashlytics (= 8.6.0)

使用 firebase-crashlytics-gradle 的 Crashlytics 上传失败

如何使用 Firebase (Crashlytics) 记录非致命(捕获)异常