| 選取平台: | iOS+ Android Flutter Unity |
根據預設,Firebase Crashlytics 會自動檢測 Flutter 專案,上傳必要的符號檔案,確保當機回報已去模糊化,且可供人類閱讀。
不過,有時專案可能無法完整設定。本指南將概述自動化作業的功能,並提供偵錯專案設定的第一步。
Apple 平台
檢查上傳 dSYM 檔案的設定
新增 Crashlytics Flutter 外掛程式並執行 flutterfire configure 指令後,系統會嘗試在專案的 Xcode 工作區中新增執行指令碼,找出必要的 dSYM 符號檔案並上傳至 Crashlytics。如果沒有這些檔案,Crashlytics 資訊主頁會顯示「缺少 dSYM」快訊,且後端會保留例外狀況,直到上傳缺少的檔案為止。
如果遇到這個問題,請先確認您已安裝執行指令碼:
在專案的 iOS 目錄 (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace) 中,找出並開啟 Xcode 工作區檔案。確認 Runner 目標的建構階段是否已新增名為
[firebase_crashlytics] Crashlytics Upload Symbols的執行指令碼。
檢查 Flutter 和 Crashlytics 的版本設定(如果使用 --split-debug-info 旗標)
如果 Flutter 專案使用 --split-debug-info 旗標 (以及 --obfuscate 旗標,如有需要),則須採取額外步驟,才能為應用程式顯示可讀的堆疊追蹤。
請確認專案使用的是建議的版本設定 (Flutter 3.12.0 以上版本和 Crashlytics Flutter 外掛程式 3.3.4 以上版本),這樣專案才能自動產生 Flutter 符號 (dSYM 檔案) 並上傳至 Crashlytics。
Android
檢查依附元件設定
flutterfire configure 指令會嘗試將必要的依附元件新增至專案的 Gradle 建構檔案。如果未加入這些依附元件,且已開啟模糊處理功能,Firebase 控制台中的當機報告可能會經過模糊處理。
請確認專案層級 build.gradle 和應用程式層級 build.gradle 中有下列幾行:
在專案層級建構檔案 (
android/build.gradle) 中,檢查是否有下列程式碼:dependencies { // ... other dependencies classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' }在應用程式層級建構檔案 (
android/app/build.gradle) 中,檢查是否有以下這行:// ... other imports android { // ... your android config } dependencies { // ... your dependencies } // This section must appear at the bottom of the file apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics'
確認您是使用 CLI 上傳 Flutter 符號 (如果使用 --split-debug-info 旗標)
如果 Flutter 專案使用 --split-debug-info 旗標 (以及 --obfuscate 旗標,如有需要),則須採取額外步驟,才能為應用程式顯示可讀的堆疊追蹤。
使用 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:17104a2ced0c9b9bPATH/TO/symbols:建構應用程式時,傳遞至--split-debug-info旗標的相同目錄
如果問題仍未解決,請參閱 Android 專用指南,瞭解如何排解經過模糊處理的報告。