如何在 Flutter 中报告静默崩溃
Posted
技术标签:
【中文标题】如何在 Flutter 中报告静默崩溃【英文标题】:How to report Silent Crashes in Flutter 【发布时间】:2020-07-12 06:23:50 【问题描述】:我们的应用使用 Firebase Crashlytics 和 Sentry 来跟踪所有崩溃。我们已经用崩溃处理覆盖了我们所有的 dart 代码,但注意到在某些情况下崩溃来自本机代码,这意味着它们不会被我们的捕获器捕获。
例如,我们最近遇到了一个问题,我们的一张图片意外以非常高分辨率发布,导致内存问题,并且应用在没有任何报告的情况下崩溃。
我们能够了解并修复它,因为来自用户的反馈以及它很容易重现的事实,但我们更愿意为此类崩溃提供某种报告。
【问题讨论】:
【参考方案1】:Firebase Crashlytics 也可以发现这些错误。 按照软件包设置指南中的所有步骤操作。 https://pub.dev/packages/firebase_crashlytics
引用指南
用Crashlytics.instance.recordFlutterError
覆盖FlutterError.onError
将自动捕获从Flutter 框架内抛出的所有错误。
如果您想捕获runZoned
中发生的错误,可以将Crashlytics.instance.recordError
提供给onError 参数:
runZoned<Future<void>>(() async
// ...
, onError: Crashlytics.instance.recordError);
【讨论】:
我们正在使用catcher,它已经启用了这些钩子。我们仍然没有得到来自本机代码的错误。我认为 FlutterError.onError 仅适用于 Flutter 框架中的错误,而不适用于 Native 代码中的错误。【参考方案2】:您是否尝试过捕获 NDK 崩溃? Crashlytics 支持它
【讨论】:
我没听懂你在说什么。你能澄清更多吗? 您告诉过在某些情况下,崩溃来自本机代码。我的意思是 crashlytics 插件支持从本地代码捕获崩溃。阅读如何在插件文档中启用它以上是关于如何在 Flutter 中报告静默崩溃的主要内容,如果未能解决你的问题,请参考以下文章
为啥 vulkan 在集成显卡和 GPU 的系统中报告单个设备?