Crashlytics不显示崩溃

时间:2016-10-04 15:34:58

标签: ios swift crash crashlytics

我刚刚使用this官方说明安装了Crashlitycs。

我为Debug和Release设置了调试信息格式为“DWARF with dSYM File”,并且禁用了Bitcode(有些人写道它可以提供帮助):

enter image description here

的AppDelegate:

Fabric.sharedSDK().debug = true
Fabric.with([Crashlytics.self])

为了模拟我使用的崩溃

Crashlytics.sharedInstance().crash()

var ggg: Int!
print(ggg)

Crashlitics收集有关会话的一些信息。例如,它更新包版本信息:

enter image description here

因此与Crashlitics的联系起作用。但崩溃信息为空:

enter image description here

我正在使用XCode 8和iOS 9/10。我做错了什么?

修改

我在没有XCode调试器连接的模拟器和设备上测试过它(即从sumulator / device屏幕启动)

最后,我在崩溃后7-8小时收到了一些Crashlytics报告。我之前期待它们,因为根据documentation

  

在几分钟内,您应该会看到Fabric上出现崩溃   仪表板。

但是我没有收到我正在等待的所有崩溃。在我的实验中,我尝试了不同的方法来初始化Crashlytics:

Fabric.with([Crashlytics.self])
and
Fabric.with([Crashlytics.self()])

可能是原因吗?我也发现了类似的未答复question

5 个答案:

答案 0 :(得分:28)

检查以下条款,

  1. 确保Crashlytics SDK系列在所有其他第三方SDK系列之后。 (它需要在appDidFinishLaunching方法中调用最后一个。)

  2. 强制崩溃,然后重新启动应用。必须断开Xcode以阻止其拦截崩溃报告。要断开Xcode,请按照here说明操作。

  3. 如果你正在使用[Crashlytics sharedInstance]崩溃];测试崩溃,确保它不在appDidFinishLaunching方法中。

  4. 这些已在支持部分中提及,以下是其他部分 -

    1. 签入组织 - >你的应用 - >缺少dSYM,是否显示任何缺少的dSYM文件
    2. enter image description here

      如果是,则执行以下步骤

      1. 右键点击您的存档 - >在Finder中显示 - >右键单击文件,然后单击“显示包内容”
      2. 右键单击dSYM文件 - >显示包裹内容 - >内容 - >资源 - > DWARF(在终端开放)
      3. 运行命令dwarfdump --uuid"您在dwarf文件夹中看到的文件名"
      4. enter image description here

        这将显示所有关联的UUID,如果任何列出的UUID与缺少的dSYM id中提到的UUID匹配,则只压缩dSYM文件夹并将其上传到crashlytics Missing dSYM段。

        此步骤很重要,因为有时我们从组织者提取的dSYM文件不包含正确的UUID。上传错误后我们等待更新。因此,最好确保上传正确的dSYM文件。

        除了上述内容之外,构建设置中的Bitcode属性和调试信息格式也会影响崩溃报告。

答案 1 :(得分:9)

您需要运行应用程序,但不能运行Xcode。

如果您使用的是设备,只需启动未连接usb的应用即可。 如果您使用的是模拟器,请停止从Xcode运行该应用程序。然后通过鼠标点击再次打开它。

接下来,导航至将调用buttonPress的{​​{1}}或function

然后在崩溃后再次重新打开应用程序。(如果需要,可以将其连接到控制台)此步骤非常重要,因为crashlytics会在应用程序终止之前保存崩溃报告。下次打开应用程序时,它会将报告发布到crashlytics。

文档here实际上也解释了故障排除问题。

答案 2 :(得分:2)

崩溃而不上传的另一个潜在原因是在没有调用完成处理程序的情况下实现Crashlytics委托:

// MARK: CrashlyitcsDelegate
func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
    // Last launch we crashed!
         completionHandler(true)
    }
}

相反,它应该是这样的:

name1-value1-name2-value2

答案 3 :(得分:2)

再次在构建设置中检查调试和发布的调试信息格式均为“带有dSYM文件的DWARF”

答案 4 :(得分:1)

在2019年仍然有意义。

就像Zac Kwan所说的那样,您必须在没有将应用程序实例附加到Xcode的情况下执行此操作。

如果您正在制作these文档,他们会为您提供理解,添加所需的信息,然后进行测试,按崩溃按钮,然后重新启动,所有过程均通过Xcode进行。

执行以下操作:

  1. 将所需的Crashlytics信息添加到您的项目中。在Xcode中运行一次。然后继续并手动进入模拟器,打开您的应用程序,强制崩溃。
  2. 您应该收到一封有关“致命错误”的电子邮件。
  3. 大约5-10分钟后,它将显示在Firebase控制台中。