跳转至内容
Xdea
创造精彩
XdeaXdea
  • 主页
  • 技术日志
  • 线下活动
Search:
Github page opens in new window
登录
  • 主页
  • 技术日志
  • 线下活动

为 Flutter 应用添加 Sentry 异常收集

您在这里:
  1. 首页
  2. 技术日志
  3. 为 Flu…

在 XMUX 的第一个公测版本发布前,我们就建立相关的测试群组以方便用户反馈遇到的问题和建议,并及时修复漏洞。然而在正式版本发布之后,我们仍然收到了许多来自同学们的问题反馈,然而在用户界面中出现的异常通常无法得到准确的描述和堆栈信息,这给我们排查漏洞带来的很大困难。

幸运的是,Flutter 引擎已经默认帮助我们收集了未处理异常并提供了统一处理这些异常的接口,通过给 FlutterError.onError 注册回调,这些异常就可以被手动处理,再配合 Sentry 即可实现自动地收集异常及其详细的堆栈信息。

首先,我们需要添加 Sentry 的 Dart 版客户端 并使用 DSN 进行初始化,DSN 可以在 Sentry 面板中找到。

import 'package:sentry/sentry.dart';

final sentry = SentryClient(dsn: 'DSN');

引入 flutter/fondation 并注册回调,这些异常信息将通过 Sentry 客户端进行上传。

import 'package:flutter/foundation.dart';
...
FlutterError.onError = (e) =>
        sentry.captureException(exception: e.exception, stackTrace: e.stack);
...

但是在开发环境下,我们通常需要直接在控制台内输出异常信息以帮助开发者快速修复问题,而不希望将它们反馈至 Sentry 。通过 DartVM 的环境变量 dart.vm.product, 我们可以判断当前是否处于生产模式,并仅在生产模式下注册异常收集回调。

...
if (bool.fromEnvironment('dart.vm.product'))
    FlutterError.onError = (e) =>
        sentry.captureException(exception: e.exception, stackTrace: e.stack);
...
Category: 技术日志ctrysbita2018年12月20日评论

作者: ctrysbita

https://www.xdea.xyz

文章导航

历史的文章历史的文章:Winter Party 2016未来的文章未来的文章:解决 Ubuntu 安装 WPS 后无法启动的问题

Related posts

米家LED灯泡蓝牙MESH版拆解
2021年6月26日
双系统共享蓝牙配对实现鼠标无缝切换
2021年2月1日
Flutter Native Channel 设计与实现
2021年1月26日
Flutter Platform Channel 和 FFI 通道性能测试
2020年11月21日
解决 Ubuntu 安装 WPS 后无法启动的问题
2019年6月7日

发表回复 取消回复

你的电子邮件地址不会被公开 * 为必填字段

提交评论

近期文章
  • 米家LED灯泡蓝牙MESH版拆解
  • 双系统共享蓝牙配对实现鼠标无缝切换
  • Flutter Native Channel 设计与实现
  • Flutter Platform Channel 和 FFI 通道性能测试
  • 解决 Ubuntu 安装 WPS 后无法启动的问题
近期评论
    Xdea
    © 2013-2021 Xdea Team. All Rights Reserved. | 闽ICP备18003472号