寻求一些关于如何使用 flutter 的 firebase_crashlytics
包记录捕获的异常的说明。
如果我理解正确(并且通过运行一些示例代码)Crashlytics.instance.log('text');
只会将日志添加到下一个崩溃报告中,而不是发送非-致命问题本身。
我正在寻找与 Android 上的 Crashlytics.logException(e);
等效的功能,例如
try {
throwException();
} catch (e) {
Crashlytics.logException(e);
}
它允许您记录捕获的异常,以便它们在 Crashlytics 仪表板中显示为非致命问题。
目前,flutter 的 firebase_crashlytics 包可以实现这一点吗?
目前调用 Crashlytics.instance.recordError('text', StackTrace.current)
是实现此目的的方法吗?
非常感谢!
最佳答案
简短回答,是的。
Crashlytics.instance.recordError()
相当于 Crashlytics.logException()
如果你深入研究 Flutter firebase_crashlytics源码中,你可以实际看到涉及到哪些Android API。
Flutter 的 recordError()调用方法Crashlytics#onError在 Android 库中。
跟踪 Crashlytics#onError,您会看到它转到 Crashlytics.logException(exception);
附加说明,您还会注意到原因 Crashlytics.instance.log()
“只会将日志添加到下一个崩溃报告中”。这些日志被添加到 ListQueue<String> _logs
然后将其打包到下一次调用 recordError()
中
Flutter invocation of Crashlytics.logException() 的片段:
_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.logException() :
To reduce your users’ network traffic, Crashlytics batches logged exceptions together and sends them the next time the app launches.
For any individual app session, only the most recent 8 logged exceptions are stored.
关于firebase - Flutter Crashlytics 日志捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57997416/