在 Crashlytics 資訊主頁中取得淺顯易懂的當機報告 (Flutter)

選取平台: iOS+ Android Flutter Unity


根據預設,Firebase Crashlytics 會自動檢測 Flutter 專案,並上傳必要的符號檔案,確保當機報告經過去模糊化處理,且淺顯易懂。

很抱歉,有時專案可能無法完成設定。本指南會說明自動化作業的用途,並提供專案設定的偵錯初步步驟。

Apple 平台

檢查上傳 dSYM 檔案的設定

新增 Crashlytics Flutter 外掛程式並執行 flutterfire configure 指令後,系統會嘗試將執行指令新增至專案的 Xcode 工作區,找出並將必要的 dSYM 符號檔案上傳至 Crashlytics。如果沒有這些檔案,Crashlytics資訊主頁就會顯示「缺少 dSYM」警示,後端也會暫緩處理例外狀況,直到您上傳缺少的檔案為止。

如果遇到這個問題,請先確認您已安裝執行指令碼:

  1. 在專案的 iOS 目錄中找出並開啟 Xcode 工作區檔案 (FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace)。

  2. 確認名為 [firebase_crashlytics] Crashlytics Upload Symbols 的執行指令碼是否已新增至 Runner 目標的建構階段。

    請參閱下方的適用章節,瞭解「執行指令碼」不存在存在的情況。

檢查 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 (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 旗標的相同目錄

如果問題仍未解決,請參閱 Android 專用指南,瞭解如何排解模糊處理報表的問題