扑。应用程序不会崩溃并发送崩溃报告

时间:2021-03-22 16:06:53

标签: flutter flutter-layout flutter-dependencies

我已将 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

enter image description here

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

我知道人们不希望他们的应用程序崩溃,但是……我如何知道应用程序在生产过程中是否崩溃?

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

1 个答案:

答案 0 :(得分: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


来自评论:

<块引用>

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

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

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

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

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

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