我正在尝试将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仪表板看起来像:
因此所有内容都记录在非致命事件下。但是,如果我删除Crashlytics并运行该应用程序,则该应用程序确实崩溃了。所以我很困惑为什么在实现Crashlytics之后应用程序不会崩溃。
这可能是什么原因?
答案 0 :(得分:1)
此问题与将IDE与窗口小部件检查器一起使用有关。窗口小部件检查器将FlutterError.onError
处理程序设置为与main.dart中设置的设置不同。因此,一旦小部件检查器运行,Crashlytics插件将永远不会处理错误。
这仅是在窗口小部件检查器运行时处于调试模式的应用程序的问题。由于没有小部件检查器,因此发布模式应用程序应能按预期工作;还可以按预期方式从终端运行应用程序,因为在这种情况下不涉及小部件检查器。使用flutter run时,请确保使用flutter clean,因为有时检查器可能仍会附加到该应用程序。