正在寻找一些关于如何使用flutter的firebase_crashlytics包来记录捕获的异常的说明。
如果我理解正确(并且从运行示例代码的角度来看,Crashlytics.instance.log('text');
只会将日志添加到下一个崩溃报告中,而不是发送非致命性的问题本身。
例如,我正在寻找与Android上的Crashlytics.logException(e)
等效的功能
try {
throwException();
} catch (e) {
Crashlytics.logExcpetion(e);
}
允许您记录捕获的异常,使它们在Crashlytics仪表板中显示为非致命问题。
目前可以通过flutter的firebase_crashlytics包实现吗?
现在是通过电话Crashlytics.instance.recordError('text', StackTrace.current)
实现这一目标吗?
非常感谢!
答案简短,是。
[Crashlytics.instance.recordError()
等于Crashlytics.logExcpetion()
] >>
如果深入研究Flutter firebase_crashlytics源代码,您实际上可以看到涉及到的Android API。
Flutter的recordError()调用Android库中的方法Crashlytics#onError。
并跟踪Crashlytics#onError,您会看到它转到Crashlytics.logException(exception);
附加说明,您还会注意到为什么Crashlytics.instance.log()
“只会将日志添加到下一个崩溃报告中。]
ListQueue<String> _logs
,然后打包到recordError()
的下一个调用中Flutter的invocation of Crashlytics.logExcpetion()摘录:
_recordError(...) { ... final String result = await channel .invokeMethod<String>('Crashlytics#onError', <String, dynamic>{ 'exception': "${exception.toString()}", 'context': '$context', 'information': _information, 'stackTraceElements': stackTraceElements, 'logs': _logs.toList(), 'keys': _prepareKeys(), }); }
和一些参考文献notes for Crashlytics.logExcpetion():
为了减少用户的网络流量,Crashlytics记录了批次异常一起发送,并在下次应用启动时将其发送。
对于任何单个应用程序会话,仅记录最近的8个异常被存储。