本快速入門導覽課程說明如何使用 Crashlytics Flutter 外掛程式,在應用程式中設定 Firebase Crashlytics,以便在 Firebase 控制台中取得完整的當機報告。
設定 Crashlytics 時,需要同時使用指令列工具和 IDE。如要完成設定,您需要強制擲回測試例外狀況,將第一份當機報告傳送至 Firebase。
事前準備
如果您尚未在 Flutter 專案中設定及初始化 Firebase,請先完成這些步驟。
建議:如要自動取得導覽標記記錄,瞭解使用者在發生當機、一般錯誤或 ANR 事件前執行的動作,請在 Firebase 專案中啟用 Google Analytics。
如果現有的 Firebase 專案未啟用 Google Analytics,您可以前往 Firebase 控制台的「
,然後在「 」>「專案設定」整合」分頁標籤中啟用 Google Analytics。 如果您要建立新的 Firebase 專案,請在專案建立工作流程中啟用 Google Analytics。
請注意,Crashlytics 支援的所有 Android 和 Apple 平台 (watchOS 除外) 都提供路徑記錄。
步驟 1:將 Crashlytics 新增至 Flutter 專案
在 Flutter 專案的根目錄中,執行下列指令來安裝 Crashlytics 的 Flutter 外掛程式。
如要使用麵包屑記錄,請將 Google Analytics 的 Flutter 外掛程式新增至應用程式。請確認已在 Firebase 專案中啟用 Google Analytics。
flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
在 Flutter 專案的根目錄中執行下列指令:
flutterfire configure
執行這項指令可確保 Flutter 應用程式的 Firebase 設定為最新狀態,並為 Android 應用程式新增必要的 Crashlytics Gradle 外掛程式。
完成後,請重建 Flutter 專案:
flutter run
(選用) 如果您的 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:設定當機處理常式
您可以覆寫 FlutterError.onError
,並使用 FirebaseCrashlytics.instance.recordFlutterFatalError
自動擷取 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 資訊主頁中看見初始資料。
在應用程式中加入程式碼,強制擲回測試例外狀況。
如果您已新增錯誤處理常式,該常式會呼叫頂層
Zone
的FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
,則可使用下列程式碼在應用程式中新增按鈕,按下該按鈕時會擲回測試例外狀況:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
建構並執行應用程式。
強制擲回測試例外狀況,以便傳送應用程式的第一份報告:
在測試裝置或模擬器上開啟應用程式。
在應用程式中,按下使用上述程式碼新增的測試例外狀況按鈕。
前往 Firebase 控制台的Crashlytics 資訊主頁,查看測試當機情形。
如果重新整理控制台後,您在五分鐘內仍未看到測試當機,請啟用偵錯記錄,確認應用程式是否傳送當機報告。
這樣就完成了!Crashlytics 現在會監控應用程式的當機情形,以及 Android 上的非嚴重錯誤和 ANR。前往Crashlytics資訊主頁,查看及調查所有報表和統計資料。
後續步驟
自訂當機報告設定,新增選擇加入回報、記錄、鍵,以及追蹤其他非嚴重錯誤。
與 Google Play 整合,即可直接在 Crashlytics 資訊主頁中,依據 Google Play 軌道篩選 Android 應用程式的當機報告。這樣一來,您就能在資訊主頁上更專注於特定版本。
在 Android Studio 的「App Quality Insights」視窗中,查看程式碼旁的堆疊追蹤和當機統計資料 (適用於 Electric Eel 2022.1.1 以上版本)。