我刚刚使用this官方说明安装了Crashlitycs。
我为Debug和Release设置了调试信息格式为“DWARF with dSYM File”,并且禁用了Bitcode(有些人写道它可以提供帮助):
的AppDelegate:
Fabric.sharedSDK().debug = true
Fabric.with([Crashlytics.self])
为了模拟我使用的崩溃
Crashlytics.sharedInstance().crash()
和
var ggg: Int!
print(ggg)
Crashlitics收集有关会话的一些信息。例如,它更新包版本信息:
因此与Crashlitics的联系起作用。但崩溃信息为空:
我正在使用XCode 8和iOS 9/10。我做错了什么?
修改
我在没有XCode调试器连接的模拟器和设备上测试过它(即从sumulator / device屏幕启动)
最后,我在崩溃后7-8小时收到了一些Crashlytics报告。我之前期待它们,因为根据documentation:
在几分钟内,您应该会看到Fabric上出现崩溃 仪表板。
但是我没有收到我正在等待的所有崩溃。在我的实验中,我尝试了不同的方法来初始化Crashlytics:
Fabric.with([Crashlytics.self])
and
Fabric.with([Crashlytics.self()])
可能是原因吗?我也发现了类似的未答复question。
答案 0 :(得分:28)
检查以下条款,
确保Crashlytics SDK系列在所有其他第三方SDK系列之后。 (它需要在appDidFinishLaunching方法中调用最后一个。)
强制崩溃,然后重新启动应用。必须断开Xcode以阻止其拦截崩溃报告。要断开Xcode,请按照here说明操作。
如果你正在使用[Crashlytics sharedInstance]崩溃];测试崩溃,确保它不在appDidFinishLaunching方法中。
这些已在支持部分中提及,以下是其他部分 -
如果是,则执行以下步骤
这将显示所有关联的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)