Firebase / Crashlytics未接收到崩溃

时间:2018-07-17 18:51:34

标签: swift firebase crashlytics

我正在通过按钮强制崩溃,而Firebase / Crashlytics似乎没有解决问题。

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

我的应用程序有两个App ID,一个ID供企业内部使用,另一个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

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

更新:

Mike注意到带有

的日志
[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

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

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

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

这是dSYM enter image description here

这是仪表板 enter image description here

3 个答案:

答案 0 :(得分: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. 最后,如果没有出现崩溃/ 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脚本'Upload 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
    

答案 1 :(得分: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变量。
  5. 在真实设备上运行应用程序,既可以通过xCode进行调试,也可以在拔出插头后运行。

我可以在控制台中看到它...

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

...所以看来Crashlytics已被初始化,但在FB Crashlytics控制台中仍然没有显示任何内容。

已解决的问题

在Firebase文档中,它显示了创建UI并添加崩溃按钮的示例。我以为添加用户界面是一件微不足道的事情。但是,似乎Crashlytics直到func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool之后才完全初始化,这在文档中还不清楚。

我将强制发生崩溃的行移到了主视图控制器的viewDidLoad()中,崩溃几乎立即显示在Crashlytics仪表板中。

答案 2 :(得分:0)

Crashlytics发生故障,请参阅此处的Status