把报错信息通过服务上传
开发者总是试图创造没有 bug 的应用,但是 bug 还是会时不时地出现。这些 bug 会给用户带来糟糕的体验,所以获知 bug 发生的位置以及出现的频率就显得极为关键了。这样,你就可以根据 bug 的影响程度优先修复它们。
如何确定用户遇到 bug 的频率呢?解决方案是:当异常发生时,生成一份日志,日志中包含发生的异常及相关的堆栈信息。随后,可以将日志发送到异常监控报警平台,比如 Bugsnag、Fabric、Firebase Crashlytics、 Rollbar 或 Sentry。
异常监控报警平台会将上报的崩溃日志异常信息聚合并分组归类,这样就可以知道应用程序出现异常的频率并定位异常发生位置。
这个章节中,你可以通过以下步骤学习如何把异常信息上报给异常监控报警平台 Sentry:
-
从 Sentry 平台获取 DSN
-
导入 Sentry package
-
初始化 Sentry SDK
-
捕获并上报异常
1. 从 Sentry 平台获取 DSN
#在向 Sentry 上报异常信息前,需要在 Sentry.io 上获取应用的唯一身份标识 DSN。
根据以下步骤,获取 DSN:
-
登录账户
-
新建一个 Flutter 工程
-
复制包含 DSN 的代码片段
2. 导入 Sentry 包
#导入 sentry_flutter
package 到应用中,这个 package 能更方便的将错误报告发送给
Sentry 的错误追踪系统。
运行 flutter pub add
将 sentry_flutter
添加为依赖:
flutter pub add sentry_flutter
3. 创建 SentryClient
#
初始化 SDK 来自动捕获不同的未处理的错误。
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) => options.dsn = 'https://example@sentry.io/example',
appRunner: () => runApp(const MyApp()),
);
}
另外,你也可以使用 dart-define
标记将 DSN 传递给 Flutter。
--dart-define SENTRY_DSN=https://example@sentry.io/example
这番操作都发生了什么?
#使用 Sentry 捕获 Dart 和原生中未处理的错误,以上这些操作就足够了。这包括 iOS 上的 Swift、Objective-C、C 和 C++,以及 Android 上的 Java、Kotlin、C 和 C++。
4. 捕获并上报异常
#除了自动初始化 Sentry SDK 来捕获和上报错误之外,你还可以通过 API 来报告错误:
await Sentry.captureException(exception, stackTrace: stackTrace);
更多相关信息,请参阅 pub.dev 上的 Sentry API 文档。
了解更多
#更多关于使用 Sentry SDK 的文档可以在 其官网 查看。
完整样例
#查看 Sentry flutter example 示例应用,体验完整流程。
除非另有说明,本文档之所提及适用于 Flutter 的最新稳定版本,本页面最后更新时间: 2024-04-27。 查看文档源码 或者 为本页面内容提出建议。