我们最近在我们的生产iOS应用程序中遇到了Core Data堆栈的问题,而Fabric Crashlytics帮助我们解决了大部分问题。但是,我们怀疑即使在用户重新启动应用程序发送崩溃报告后,也不会报告所有崩溃。
如果应用在应用启动时遇到重复出现的崩溃循环,Crashlytics可能无法报告发生的任何崩溃。来自Fabric的文档:
如果您的应用在发布时崩溃,那么在随后的发布中我们会尝试 发送崩溃报告同步阻止主线程的a 时间很短。
以上主要线程阻止永远不会发生,因为该应用程序在Crashlytics有机会发送报告之前再次崩溃;从未报告原始崩溃。
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Fabric.with([Crashlytics.self])
Crashlytics.sharedInstance().crash() // Mimics our CoreData stack crash.
return true
}
}
我们做错了吗?有没有办法配置Crashlytics来启用此功能?
请注意,我们尝试使用其他方法来崩溃应用程序(例如强制解包),测试时未连接调试器,Fabric& Crashlytics pod正确设置,报告适用于不再发生的崩溃。
答案 0 :(得分:0)
Mike来自Fabric。鉴于崩溃发生时,init之后的行,几乎可以肯定我们的SDK没有足够的时间来完成初始化。发布时大多数应用程序崩溃发生在启动序列的后期,使我们的SDK有足够的时间进行初始化。
在应用程序在Fabric中处于活动状态之前,不要故意导致崩溃,否则可能会阻止应用程序在Fabric中激活。