用途:在 Flutter 项目中接入 Firebase Crashlytics,实现崩溃与异常上报。
主要能力:捕获 Flutter 框架致命错误、异步错误、isolate 错误及已捕获的非致命异常;通过自定义键、日志和用户标识丰富报告;支持数据收集开关与混淆构建的符号上传。
安装与配置:执行 flutter pub add firebase_crashlytics,可选 flutter pub add firebase_analytics 以启用面包屑日志;运行 flutterfire configure 更新配置并添加 Android 所需 Gradle 插件。混淆构建需上传符号文件:iOS 在 Flutter 3.12.0+ 与插件 3.3.4+ 自动处理;Android 使用 Firebase CLI(v11.9.0+)执行 firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols。
错误捕获:在 main() 中设置 FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError,并通过 PlatformDispatcher.instance.onError 捕获异步错误;非致命 Flutter 错误改用 recordFlutterError;isolate 错误通过 Isolate.current.addErrorListener 上报;已捕获异常用 recordError 并传 reason 与 information。注意每会话仅保留最近 8 条非致命异常。
报告自定义:setCustomKey 最多 64 对键值、每项最大 1 kB;log 每会话上限 64 kB;setUserIdentifier 设置用户标识,传空字符串可清除。避免把唯一值直接写入异常消息。
性能与开关:异常在后台线程处理,致命报告实时发送,非致命报告写入磁盘后随下次致命报告或重启发送。可在 kReleaseMode 下用 setCrashlyticsCollectionEnabled 控制采集。
测试:调用 FirebaseCrashlytics.instance.crash() 触发测试崩溃,以 release 模式运行、重开应用后约 5 分钟内在控制台查看,并核对自定义键、日志、用户标识与符号化堆栈。
限制:默认自动收集所有用户崩溃报告;关闭后崩溃信息先本地存储,重新启用时再上传。其余未在资料中说明的细节暂未提供。