【问题标题】:Flutter. App won't crash and send crash report扑。应用程序不会崩溃并发送崩溃报告
【发布时间】:2021-06-19 07:33:25
【问题描述】:

我已在我的应用程序中集成了Firebase Crashlytics,我正在测试 Android 应用程序。我已经强制崩溃来检查它:

if (true){
  List arr = [];
  throw arr[1] =2;
}

我的问题是应用程序不会崩溃。我只是在日志中得到它,但它不会崩溃,以便 Crashlytics 将堆栈跟踪发送到服务器。

E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: 1

为什么会发生这种情况以及为什么不能“正常工作”。

我知道有人不想让他们的应用崩溃,但是......我怎么知道应用在生产时是否崩溃?

附:另一方面,使用FirebaseCrashlytics.instance.crash() 进行测试。应用程序崩溃并发送报告。为什么会这样?!

【问题讨论】:

  • 因为您在上面尝试的方法是抛出运行时异常,而不是让您的应用崩溃。
  • 嗯 .. 我怎么让它崩溃呢?我的意思是......我确信我的代码中会在某些时候出现这种类型的异常。尝试使用超出范围的索引中的列表项。如果它不会使应用程序崩溃,因此不会触发 Firebase 发送崩溃,我不会知道。我说的对吗?

标签: flutter flutter-layout flutter-dependencies


【解决方案1】:

我遇到了同样的问题,并找到了您的问题的答案和有效的解决方案。

为什么会发生这种情况以及为什么不能“正常工作”

根据 Crashlytics,有两种类型的事件:崩溃和非致命事件。 像您这样的未处理异常被视为非致命事件,Crashlytics 默认情况下不会记录它们。 https://firebase.flutter.dev/docs/crashlytics/reports#filtering-crash-types

但是......我如何知道应用程序在生产时是否崩溃?

您可以通过在 main.dart 中执行此操作来启用非致命记录

FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;

https://firebase.flutter.dev/docs/crashlytics/usage#handling-uncaught-errors

附:另一方面,使用 FirebaseCrashlytics.instance.crash() 进行测试。应用程序崩溃并发送报告。为什么会这样?!

因为 FirebaseCrashlytics.instance.crash() 会导致应用本机崩溃。 https://pub.dev/documentation/firebase_crashlytics/latest/firebase_crashlytics/FirebaseCrashlytics/crash.html


来自 cmets:

我认为,如果用户点击后什么都没有发生,而不是应用程序崩溃,这对用户来说更令人沮丧。如果它崩溃了,那么很明显发生了什么,有一个问题,而不是什么都没有发生,让用户大吃一惊......

除了提交非致命错误报告外,您还可以实施以下方案之一:

  1. 终止应用(模拟崩溃)

exit(0) 会终止应用,并且不会向 Crashlytics 报告其他崩溃

FlutterError.onError = (FlutterErrorDetails details) async {
    await FirebaseCrashlytics.instance.recordFlutterError(details);
    exit(0);
};
  1. 显示一些警报,例如“出现问题”

根据您的应用程序处理的数据和操作的性质,显示警报可能会更好。

【讨论】:

  • 哦,哇。最后!一个详细的答案。请允许我问一个问题……如果应用程序崩溃(即应用程序崩溃),我仍然想向用户提供视觉反馈。例如,不是单击按钮不起作用,并且当您这样做时没有任何反应,我仍然想让应用程序崩溃。我认为如果用户单击并且没有发生任何事情而不是应用程序崩溃,这对用户来说更令人沮丧。如果它崩溃了,那么很明显发生了什么,有一个问题,而不是什么都没有发生,让用户大吃一惊......
  • @AndreiBogdan 请看一下,我用附加信息编辑了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
相关资源
最近更新 更多