And*_*dan 4 flutter flutter-dependencies flutter-layout
我已经集成Firebase Crashlytics到我的应用程序中,并且正在测试 Android 应用程序。我强迫崩溃来检查它:
if (true){
List arr = [];
throw arr[1] =2;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是应用程序不会崩溃。我只是在日志中得到这个,但它不会崩溃,以便 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()另一方面,PS 对作品进行测试。应用程序崩溃并发送报告。为什么这样有效?
我遇到了同样的问题,并找到了您的问题的答案和有效的解决方案。
为什么会发生这种情况以及为什么这不能“正常工作”
根据 Crashlytics,有两种类型的事件:崩溃和非致命事件。像您这样的未处理异常被视为非致命事件,并且 Crashlytics 默认情况下不会记录它们。 https://firebase.flutter.dev/docs/crashlytics/reports#filtering-crash-types
但是...我如何知道应用程序在生产过程中是否崩溃?
您可以通过在 main.dart 中执行此操作来启用非致命记录
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
Run Code Online (Sandbox Code Playgroud)
https://firebase.flutter.dev/docs/crashlytics/usage#handling-uncaught-errors
另一方面,使用 FirebaseCrashlytics.instance.crash() 进行 PS 测试是有效的。应用程序崩溃并发送报告。为什么这样有效?
因为 FirebaseCrashlytics.instance.crash() 会导致应用程序本机崩溃。 https://pub.dev/documentation/firebase_crashlytics/latest/firebase_crashlytics/FirebaseCrashlytics/crash.html
来自评论:
我认为,如果用户点击后没有任何反应,这比应用程序崩溃更令人沮丧。如果它崩溃了,那么很明显发生了什么,存在问题,而不是什么也没发生并让用户大吃一惊......
除了提交非致命错误报告之外,您还可以实现以下方案之一:
exit(0) 终止应用程序并且不会向 Crashlytics 报告额外的崩溃
FlutterError.onError = (FlutterErrorDetails details) async {
await FirebaseCrashlytics.instance.recordFlutterError(details);
exit(0);
};
Run Code Online (Sandbox Code Playgroud)
根据应用程序处理的数据和操作的性质,显示警报可能会更好。
| 归档时间: |
|
| 查看次数: |
2930 次 |
| 最近记录: |