查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Firebase Crashlytics 使用入门

此快速入门介绍了如何使用 Crashlytics Flutter 插件在应用中设置 Firebase Crashlytics,以便您可以在 Firebase 控制台中获得全面的崩溃报告。

设置 Crashlytics 需要用到命令行工具和 IDE。 为了完成设置,您需要强制抛出一个测试异常,以便向 Firebase 发送您的第一个崩溃报告。

准备工作

  1. 如果您尚未在 Flutter 项目中配置并初始化 Firebase,请先配置并进行初始化。

  2. 建议做法:如需使用“未遇到崩溃问题的用户”、“面包屑导航日志”和“疾速崩溃提醒”等功能,您需要在 Firebase 项目中启用 Google Analytics(分析)。

    Crashlytics 支持的所有 Android 和 Apple 平台(watchOS 除外)都可以利用 Google Analytics(分析)中的这些功能。

    确保您的 Firebase 项目中启用了 Google Analytics(分析):前往 >“项目设置”>“集成”标签页,然后按照 Google Analytics(分析)对应的屏幕上的说明进行操作。

第 1 步:将 Crashlytics 添加到您的 Flutter 项目

  1. 从 Flutter 项目的根目录运行以下命令,安装 Crashlytics Flutter 插件:

    flutter pub add firebase_crashlytics
    
  2. 从 Flutter 项目的根目录运行以下命令:

    flutterfire configure
    

    运行此命令可确保您的 Flutter 应用的 Firebase 配置是最新的,对于 Android,还会向您的应用添加所需的 Crashlytics Gradle 插件。

  3. 完成后,重新构建您的 Flutter 项目:

    flutter run
    

第 2 步:配置崩溃处理程序

您可以使用 FirebaseCrashlytics.instance.recordFlutterFatalError 替换 FlutterError.onError,以自动捕获 Flutter 框架中抛出的所有错误:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught errors from the framework to Crashlytics.
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

如果您使用区域 (zone),则对区域的错误处理程序进行插桩 (instrument) 后,系统将捕获 Flutter 框架(例如,在按钮的 onPressed 处理程序中)未捕获的错误:

void main() async {
  runZonedGuarded<Future<void>>(() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();

    FlutterError.onError =
       FirebaseCrashlytics.instance.recordFlutterFatalError;

    runApp(MyApp());
  }, (error, stack) =>
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true));
}

如需查看有关如何处理其他类型错误的示例,请参阅自定义崩溃报告

第 3 步:强制造成一次测试崩溃以完成设置

如需完成 Crashlytics 设置并在 Firebase 控制台的 Crashlytics 信息中心内查看初始数据,您需要强制抛出一个测试异常。

  1. 向您的应用添加可用于强制抛出测试异常的代码。

    如果您添加了一个对顶级 Zone 调用 FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) 的错误处理程序,则可以使用以下代码向应用添加一个按下即会抛出测试异常的按钮:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. 构建并运行您的应用。

  3. 强制抛出测试异常,以便发送您的应用的第一个报告:

    1. 在测试设备或模拟器上打开应用。

    2. 在您的应用中,按下您使用上述代码添加的测试异常按钮。

  4. 前往 Firebase 控制台的 Crashlytics 信息中心,查看您的测试崩溃报告。

    如果您已刷新控制台,但在五分钟后仍未看到测试崩溃报告,请启用调试日志记录,查看您的应用是否正在发送崩溃报告。


大功告成!Crashlytics 现在会监控您的应用是否发生崩溃,以及 Android 中的非严重错误和 ANR。您可以访问 Crashlytics 信息中心,查看和调查所有报告和统计信息。

后续步骤

  • 您可以添加自选式报告、日志、键以及跟踪其他非严重错误来自定义崩溃报告设置

  • 与 Google Play 集成,以便您可以直接在 Crashlytics 信息中心内按 Google Play 轨道过滤 Android 应用的崩溃报告。这样可让 Crashlytics 信息中心更有侧重地显示特定 build。

  • 在 Android Studio 的“App Quality Insights(应用质量分析)”窗口中查看堆栈轨迹、崩溃统计信息以及代码(从 Electric Eel 2022.1.1 开始提供)。