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
    
  4. (可選)如果您的 Flutter 項目使用--split-debug-info標誌(以及可選的--obfuscate標誌),則需要執行其他步驟來顯示應用程序的可讀堆棧跟踪。

    • Apple平台:確保您的項目使用推薦的版本配置(Flutter 3.12.0+和Crashlytics Flutter插件3.3.4+),以便您的項目可以自動生成並上傳Flutter符號(dSYM文件)到Crashlytics。

    • Android:使用Firebase CLI (v.11.9.0+) 上傳 Flutter 調試符號。在報告混淆代碼構建崩潰之前,您需要上傳調試符號。

      從 Flutter 項目的根目錄運行以下命令:

      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
      • FIREBASE_APP_ID :您的 Firebase Android 應用程序 ID(不是您的包名稱)
        示例 Firebase Android 應用程序 ID: 1:567383003300:android:17104a2ced0c9b9b

      • PATH/TO /symbols :構建應用程序時傳遞給--split-debug-info標誌的同一目錄

第 2 步:配置崩潰處理程序

您可以通過使用FirebaseCrashlytics.instance.recordFlutterFatalError覆蓋FlutterError.onError自動捕獲 Flutter 框架內引發的所有錯誤:

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

  await Firebase.initializeApp();

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

  runApp(MyApp());
}

要捕獲 Flutter 框架未處理的異步錯誤,請使用PlatformDispatcher.instance.onError

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

有關如何處理其他類型錯誤的示例,請參閱自定義崩潰報告

第 3 步:強制測試崩潰以完成設置

要完成 Crashlytics 的設置並在 Firebase 控制台的 Crashlytics 儀表板中查看初始數據,您需要強制拋出測試異常。

  1. 將代碼添加到您的應用程序中,您可以使用該代碼強制拋出測試異常。

    如果您已將調用FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)錯誤處理程序添加到頂級Zone ,則可以使用以下代碼向您的應用添加一個按鈕,按下該按鈕時,會拋出異常測試異常:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. 構建並運行您的應用程序。

  3. 強制拋出測試異常以發送應用程序的第一份報告:

    1. 從測試設備或模擬器打開您的應用程序。

    2. 在您的應用程序中,按您使用上面的代碼添加的測試異常按鈕。

  4. 轉到 Firebase 控制台的Crashlytics 儀表板以查看測試崩潰。

    如果刷新控制台後五分鐘後仍未看到測試崩潰,請啟用調試日誌記錄以查看應用程序是否正在發送崩潰報告。


就是這樣! Crashlytics 現在正在監控您的應用程序是否崩潰,以及 Android 上的非致​​命錯誤和 ANR。訪問Crashlytics 儀表板以查看和調查您的所有報告和統計數據。

下一步