为什么在实施Firebase Crashlytics时应用不会崩溃?

时间:2020-06-28 11:41:04

标签: ios firebase flutter crashlytics

我正在尝试将Firebase crashlytics集成到我的Flutter应用中。为此,我正在使用以下库。

https://pub.dev/packages/firebase_crashlytics

当前,我正在测试iOS,并且按照文档中所述执行iOS集成步骤(步骤1-4,我使用的是XCode 11.3.1)。而且,在主要功能中,我有以下一行。

FlutterError.onError = Crashlytics.instance.recordFlutterError;

为测试崩溃,我在代码中添加了索引超出范围的情况:

List<String> courseBackground = [
'courseBackground0.png',
'courseBackground1.png',
'courseBackground2.png'
];

Container(
    decoration: BoxDecoration(
        image: DecorationImage(
            image: AssetImage('assets/images/' + courseBackground[3]),
            fit: BoxFit.cover,
        ),
    ),
    child: Text('Hello'),
)

在测试应用程序的发行版本时,日志显示错误消息为:

Flutter error caught by Crashlytics plugin:
.
.
Error reported to Crashlytics

但是,该应用程序不会崩溃。

在控制台中,Crashlytics仪表板看起来像:

enter image description here

因此所有内容都记录在非致命事件下。但是,如果我删除Crashlytics并运行该应用程序,则该应用程序确实崩溃了。所以我很困惑为什么在实现Crashlytics之后应用程序不会崩溃。

这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

此问题与将IDE与窗口小部件检查器一起使用有关。窗口小部件检查器将FlutterError.onError处理程序设置为与main.dart中设置的设置不同。因此,一旦小部件检查器运行,Crashlytics插件将永远不会处理错误。

这仅是在窗口小部件检查器运行时处于调试模式的应用程序的问题。由于没有小部件检查器,因此发布模式应用程序应能按预期工作;还可以按预期方式从终端运行应用程序,因为在这种情况下不涉及小部件检查器。使用flutter run时,请确保使用flutter clean,因为有时检查器可能仍会附加到该应用程序。