Firebase / Crashlytics未收到崩溃消息

问题描述 投票:2回答:3

我正在通过一个按钮强制崩溃,而Firebase / Crashlytics似乎没有拍照。

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

我的应用程序有两个App ID,一个用于企业内部使用,另一个用于app store。触发构建时会触发脚本,以便正确使用正确的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

顺便说一句,它说我错过了dSYM,我上传了dsym,它仍然说我需要加载它。

更新:

迈克注意到了日志

[Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize

看起来很麻烦

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

所以这是我在崩溃后插入调试器后的日志状态。

注意:我将日志记录的设置更改为.notice,并将fabric debug设置为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

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

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

注意:崩溃免费用户统计信息已更改,在缺少的dSYM下,它显示崩溃,但没有出现问题。

这是dSYMs enter image description here

这是仪表板enter image description here

swift firebase crashlytics
3个回答
4
投票

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

  1. 删除Fabric键,这仅适用于您之前安装了Fabric / Crashlytics的情况。 enter image description here
  2. 删除此行 Fabric.with([Crashlytics.self]) 如果你在控制台中看到这个 [Fabric] [Fabric +with] called multiple times. Only the first call is honored, please pass all kits you wish to initialize
  3. 最后,如果您的crashes / dSYM没有出现,请在构建阶段将其添加为运行脚本阶段。我把这个阶段命名为“Uplaod dSYM” "${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}" 我通过转到构建日志确认上传成功,找到“运行自定义shell脚本'上传dSYM'扩展它以显示状态。它应该为您正在构建的每个架构说出类似的内容。 2018-07-19 18:38:15.630 upload-symbols[42776:1122351] Successfully submitted symbols for architecture arm64 with UUID 011bb8b8c270398292fac15e0fa117ed in dSYM: /path/YourApp.app.dSYM

3
投票

什么都行不通

xCode 9.4.1 | iOS 11 |斯威夫特4

尽管我尝试了一些不起作用的东西,但我并没有崩溃:

  1. Crashlytics.sharedInstance().crash()初始化Crashlytics后,通过func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool强制崩溃
  2. 添加另一个答案"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"中提到的脚本
  3. 测试之间等待5分钟(几次)
  4. 以不同的方式强制崩溃,例如强行展开nil var。
  5. 在真实设备上运行应用程序,既可以通过xCode进行调试,也可以在拔出插头时运行。

我可以在控制台中看到这个......

2018-09-13 17:58:01.893028-0500 Diem[8715:8252505] [Crashlytics] Version 3.10.7 (130)

......所以似乎Crashlytics正在初始化,但仍然没有出现在FB Crashlytics控制台中。

什么修复它

在Firebase文档中,它显示了创建UI的示例,添加了崩溃按钮。我假设添加UI是一个微不足道的部分,它是。然而,似乎Crashlytics没有完全初始化,直到func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool之后的某个点,这在文档中并不清楚。

我将强制崩溃的线移动到我的主视图控制器的viewDidLoad()中,崩溃几乎立即出现在Crashlytics仪表板中。


0
投票

Crashlytics正在停运,请参阅Status

© www.soinside.com 2019 - 2024. All rights reserved.