開始使用 Firebase Crashlytics


本快速入門說明如何使用 Crashlytics Flutter 外掛程式,在應用程式中設定 Firebase Crashlytics,以便在 Firebase 主控台中取得完整的當機報告。

設定 Crashlytics 時,您必須同時使用指令列工具和 IDE。為完成設定,您需要強制擲回測試例外狀況,以便將 向 Firebase 回報第一則當機報告

事前準備

  1. 如果還沒試過 在 Flutter 中設定並初始化 Firebase 專案。

  2. 建議:如要自動取得導覽標記記錄,瞭解導致當機、非致命或 ANR 事件的使用者動作,您必須在 Firebase 專案中啟用 Google Analytics

    • 如果現有的 Firebase 專案未啟用 Google Analytics,您可以前往 Firebase 控制台的 >「專案設定」整合分頁標籤,啟用 Google Analytics

    • 如要建立新的 Firebase 專案,請啟用「Google Analytics」 專案建立流程

    請注意,所有 Android 和 Apple 平台皆有導覽標記記錄 Crashlytics 支援 (watchOS 除外)。

步驟 1:將 Crashlytics 新增至 Flutter 專案

  1. 在 Flutter 專案的根目錄中執行下列指令,以安裝 Crashlytics 的 Flutter 外掛程式

    如要充分運用麵包屑記錄,請將 Google Analytics 的 Flutter 外掛程式新增至應用程式。請確認 Firebase 專案已啟用 Google Analytics

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  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 (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 設定並在 Crashlytics 中查看初始資料 資訊主頁中的資訊主頁,Firebase請強制執行測試例外狀況 擲回。

  1. 在應用程式中加入程式碼,以便強制擲回測試例外狀況。

    如果您已將會呼叫 FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) 的錯誤處理常式新增至頂層 Zone,您可以使用下列程式碼,在應用程式中新增按鈕,當按下按鈕時,會擲回測試例外狀況:

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

  3. 強制擲回測試例外狀況,以便傳送應用程式第一個 報告:

    1. 在測試裝置或模擬器中開啟應用程式。

    2. 在應用程式中,按下您使用 。

  4. 前往 Crashlytics」資訊主頁 Firebase 控制台,查看測試當機情形。

    如果您已重新整理控制台,但五分鐘後仍未看到測試異常終止,請啟用偵錯記錄,看看應用程式是否會傳送異常終止報告。


就是這麼簡單!Crashlytics 現在會監控應用程式的當機情形,以及在 Android 裝置上的非致命錯誤和 ANR。請造訪 Crashlytics」資訊主頁 查看和調查所有報表和統計資料。

後續步驟