firebase - Flutter Crashlytics 日志捕获异常

标签 firebase flutter crashlytics

寻求一些关于如何使用 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/

相关文章:

flutter - 从一个 Dart 类访问另一个 Dart 类的功能

firebase - 找不到 com.crashlytics.sdk.android :crashlytics:17. 2.2

ios - 为什么我的数组不存储从 firebase 数据库检索的值?

firebase - Flutter:Firebase 存储在 Release模式下不上传文件

Flutter 将图像保存在 Gallery 文件夹中

gradle - Crashlytics与Proguard一起崩溃

android - 如何从可穿戴应用程序中检索崩溃报告?

ios - 当我在 swift 中为数据库 Firebase 中的 child 设置值时,什么也没有发生

angular - 如何删除 Firestore 文档中的字段?

android - flutter 错误 "the method ' toLowerCase( )' was called on null"