本快速入門介紹如何使用 Crashlytics Flutter 外掛程式在您的應用程式中設定 Firebase Crashlytics,以便您可以在 Firebase 控制台中取得全面的崩潰報告。
設定 Crashlytics 涉及使用命令列工具和 IDE。要完成設置,您需要強制拋出測試異常,以將第一個崩潰報告傳送到 Firebase。
在你開始之前
如果您還沒準備好,請在 Flutter 專案中設定並初始化 Firebase 。
建議:要自動取得麵包屑日誌以了解導致崩潰、非致命或 ANR 事件的使用者操作,您需要在 Firebase 專案中啟用 Google Analytics。
如果您現有的 Firebase 專案未啟用 Google Analytics,您可以從您的 Firebase 專案的整合標籤中啟用 Google Analytics。
Firebase 控制台中的 >專案設定。如果您要建立新的 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 (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
以下是尋找 Firebase 應用程式 ID 的兩種方法:
在您的
google-services.json
檔案中,您的應用程式 ID 是mobilesdk_app_id
值;或者在 Firebase 控制台中,前往您的專案設定。向下捲動至「您的應用程式」卡,然後按一下所需的 Firebase 應用程式以查找其應用程式 ID。
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 儀表板中查看初始數據,您需要強制拋出測試異常。
將程式碼新增到您的應用程式中,您可以使用該程式碼強制拋出測試異常。
如果您已將呼叫
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
錯誤處理程序新增至頂級Zone
,則可以使用下列程式碼為您的應用程式新增按鈕,按下該按鈕時,會拋出異常測試異常: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 開始提供)查看堆疊追蹤和崩潰統計資料以及程式碼。