Firebase/Crashlytics 未收到崩溃

Bic*_*ops 2 firebase crashlytics swift

我正在通过按钮强制崩溃,而 Firebase/Crashlytics 似乎没有发现它。

我的应用程序的一些背景。

我的应用有两个 App ID,一个用于企业内部使用,一个用于应用商店。触发构建时会触发脚本,以便正确的 GoogleService-Info.plist 用于构建。企业版工作正常,收到 dsyms 上传和崩溃。应用商店缺少 dsym,崩溃不会发生。

我进行构建,停止调试器,在 4G 上运行应用程序,以切断可能有防火墙阻止请求的公司 wifi

[Crashlytics] Version 3.10.5 (130)
[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
[Crashlytics:Crash:Reports] Packaged report with id '18357d12a8ce415584520b8f889d2776' for submission
[Crashlytics:Crash:Reports] Submitting report
...
[Crashlytics:Crash:Reports] completed submission of /path/to/app/file.multipartmime
[Crashlytics:Crash] report submission successful
Run Code Online (Sandbox Code Playgroud)

顺便说一句,它说我缺少 dSYM,我上传了 dsym,但它仍然说我需要上传它。

更新:

迈克注意到日志与

[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
Run Code Online (Sandbox Code Playgroud)

看起来很麻烦

FirebaseApp.configure()
FirebaseConfiguration.shared.setLoggerLevel(.min)
Fabric.sharedSDK().debug = false
//Fabric.with([Crashlytics.self])  // this was causing that line to appear
Run Code Online (Sandbox Code Playgroud)

所以这是我在崩溃后插入调试器后的日志现在的样子。

注意:我将日志记录的设置更改为 .notice,并将结构调试设置为 true,并将参数 FIRAnalyticsDebugEnabled 设置为 YES

[Crashlytics] Version 3.10.5 (130)
[Crashlytics:Crash:Reports] Packaged report with id 'cdece9d5d08e4caea8fcb1b1aa0e87da' for submission
[Crashlytics:Crash:Reports] Submitting report
[Crashlytics:Crash:Reports] Submitting async /path.multipartmime
[Crashlytics:Crash:Reports:Event] Sending event.
[Crashlytics:Crash] Unable to read identifier at path /path
[Crashlytics:Crash:Reports] Unable to remove a processing item
[Crashlytics:Crash:Reports] Packaged report with id '(null)' for submission
[Crashlytics:Crash:Reports] Submitting report
[Crashlytics:Crash:Reports] Submitting async path.multipartmime
4.8.1 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40009000 started
4.8.1 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see URL to some place)
[Fabric] settings downloaded successfully
[Fabric] Settings are available for consumption
[Crashlytics:Crash:Reports] completed submission of /path/770D4E72-67E0-4763-9FAA-687C0701A445.multipartmime
[Crashlytics:Crash] report submission successful
[Crashlytics:Crash:Reports] completed submission of /path.multipartmime
[Crashlytics:Crash] report submission successful
Run Code Online (Sandbox Code Playgroud)

它说我没有启用日志记录。奇怪,但没什么大不了的。

不幸的是,控制台仍然没有发现崩溃,现在我回到 dSYM 有 4 个条目,而之前只有 2 个。

注意:无崩溃用户统计数据已更改,在缺失的 dSYM 下,它显示了崩溃,但没有显示任何问题。

这是 dSYM 在此处输入图片说明

这是仪表板 在此处输入图片说明

Bic*_*ops 6

我为解决这个问题所做的事情:

  1. 删除 Fabric 密钥,这仅适用于您之前安装了 Fabric/Crashlytics 的情况。 plist 截图

  2. 删除此行

    Fabric.with([Crashlytics.self])
    
    Run Code Online (Sandbox Code Playgroud)

    如果你在控制台中看到这个

[Fabric] [Fabric +with] 多次调用。只接受第一个调用,请传递所有您要初始化的套件

  1. 最后,如果您的崩溃/dSYM 没有出现,请将其添加为构建阶段中的运行脚本阶段。我将阶段命名为“上传 dSYM”

    "${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
    
    Run Code Online (Sandbox Code Playgroud)

    我通过转到构建日志确认上传成功,找到“运行自定义 shell 脚本‘上传 dSYM’扩展它以显示状态。对于您正在构建的每个架构,它应该说类似的内容。

2018-07-19 18:38:15.630 upload-symbols[42776:1122351] 已成功提交架构 arm64 的符号,其 UUID 为 011bb8b8c270398292fac15e0fa117ed 在 dSYM 中:/path/YourApp.