Firebase Crashlytics 入門

本快速入門介紹如何使用 Firebase Crashlytics SDK 在您的應用程式中設定 Firebase Crashlytics,以便您可以在 Firebase 控制台中取得全面的崩潰報告。

設定 Crashlytics 需要在 Firebase 控制台和 IDE 中執行任務(例如新增 Firebase 設定檔和 Crashlytics SDK)。要完成設置,您需要強制測試崩潰,以將第一個崩潰報告傳送到 Firebase。

在你開始之前

  1. 如果您尚未將 Firebase 新增至您的 Unity 專案中,請將其新增至您的 Unity 專案。如果您沒有 Unity 項目,可以下載範例應用程式

  2. 建議:要自動取得麵包屑日誌以了解導致崩潰、非致命或 ANR 事件的使用者操作,您需要在 Firebase 專案中啟用 Google Analytics。

    • 如果您現有的 Firebase 專案未啟用 Google Analytics,您可以從您的 Firebase 專案的整合標籤中啟用 Google Analytics。 Firebase 控制台中的 >專案設定

    • 如果您要建立新的 Firebase 項目,請在專案建立工作流程期間啟用 Google Analytics。

步驟 1 :將 Crashlytics SDK 添加到您的應用程式

請注意,當您向 Firebase 專案註冊 Unity 專案時,您可能已經下載了 Firebase Unity SDK 並新增了以下步驟中所述的套件。

  1. 下載Firebase Unity SDK ,然後將 SDK 解壓縮到方便的位置。 Firebase Unity SDK 不特定於平台。

  2. 在開啟的 Unity 專案中,導覽至Assets > Import Package > Custom Package

  3. 從解壓縮的 SDK 中,選擇導入 Crashlytics SDK ( FirebaseCrashlytics.unitypackage )。

    若要利用麵包屑日誌,請將適用於 Google Analytics 的 Firebase SDK 新增至您的應用程式 ( FirebaseAnalytics.unitypackage )。確保您的 Firebase 專案中啟用了 Google Analytics

  4. 「匯入 Unity 套件」視窗中,按一下「匯入」

第 2 步:初始化 Crashlytics

  1. 建立一個新的 C# 腳本,然後將其新增至場景中的GameObject

    1. 開啟您的第一個場景,然後建立一個名為CrashlyticsInitializer的空GameObject

    2. 在新物件的檢查器中按一下「新增組件」

    3. 選擇您的CrashlyticsInit腳本以將其新增至CrashlyticsInitializer物件。

  2. 在腳本的Start方法中初始化 Crashlytics:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

第 3 步:(僅限 Android)設定符號上傳

僅對於使用 IL2CPP 的 Android 應用程式才需要執行此步驟。

  • 對於使用 Unity Mono 腳本後端的 Android 應用程序,不需要這些步驟。

  • 對於 Apple 平台應用程序,不需要這些步驟,因為 Firebase Unity 編輯器外掛程式會自動配置您的 Xcode 專案以上傳符號。

Crashlytics 的 Unity SDK 8.6.1+ 自動包含 NDK 崩潰報告,這使得 Crashlytics 能夠自動報告 Android 上的 Unity IL2CPP崩潰。但是,要在 Crashlytics 儀表板中查看本機庫崩潰的符號化堆疊跟踪,您必須在構建時使用 Firebase CLI 上傳符號資訊。

若要設定符號上傳,請依照說明安裝 Firebase CLI

如果您已經安裝了 CLI,請確保更新至其最新版本

第 4 步:建立項目並上傳符號

iOS+ (蘋果平台)

  1. 「建置設定」對話方塊中,將專案匯出到 Xcode 工作區。

  2. 建立您的應用程式。

    對於 Apple 平台,Firebase Unity Editor 外掛程式會自動設定您的 Xcode 項目,以便為每個建置產生相容 Crashlytics 的符號檔案並將其上傳到 Firebase 伺服器。

安卓

  1. 「建置設定」對話方塊中,執行下列其中一項操作:

    • 匯出到 Android Studio 專案以建立您的專案;或者

    • 直接從 Unity 編輯器建立您的 APK。
      在建置之前,請確保在「建置設定」對話方塊中選取「建立符號.zip」複選框。

  2. 建置完成後,產生與 Crashlytics 相容的符號文件,並透過執行以下 Firebase CLI 命令將其上傳到 Firebase 伺服器:

    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 :CLI 產生的符號檔案的路徑

      • 匯出至 Android Studio 專案 — PATH/TO/SYMBOLSunityLibrary/symbols目錄,該目錄是在您透過 Gradle 或 Android Studio 建置應用程式後在匯出的專案根目錄中建立的。

      • 直接從 Unity 建構 APK — PATH/TO/SYMBOLS是建構完成後在專案根目錄中產生的壓縮符號檔案的路徑(例如: myproject/myapp-1.0-v100.symbols.zip )。

    查看使用 Firebase CLI 命令產生和上傳符號檔案的進階選項

    旗幟描述
    --generator=csym

    使用舊版 cSYM 符號檔案產生器而不是預設的 Breakpad 產生器

    不建議使用。我們建議使用預設的 Breakpad 符號檔案產生器。

    --generator=breakpad

    使用 Breakpad 符號檔案產生器

    請注意,符號檔案產生的預設值是 Breakpad。僅當您已新增時才使用此標誌在您的建置配置中symbolGenerator { csym() } ,並且您想要覆寫它以使用 Breakpad 取代。

    --dry-run

    生成符號檔但不上傳它們

    如果您想檢查發送的文件的內容,此標誌非常有用。

    --debug提供額外的調試信息

第 5 步:強制測試崩潰以完成設置

要完成 Crashlytics 的設定並在 Firebase 控制台的 Crashlytics 儀表板中查看初始數據,您需要強制測試崩潰。

  1. 找到一個現有的GameObject ,然後在其中加入以下腳本。該腳本將在您運行應用程式幾秒鐘後導致測試崩潰。

    using System;
    using UnityEngine;
    
    public class CrashlyticsTester : MonoBehaviour {
    
        int updatesBeforeException;
    
        // Use this for initialization
        void Start () {
          updatesBeforeException = 0;
        }
    
        // Update is called once per frame
        void Update()
        {
            // Call the exception-throwing method here so that it's run
            // every frame update
            throwExceptionEvery60Updates();
        }
    
        // A method that tests your Crashlytics implementation by throwing an
        // exception every 60 frame updates. You should see reports in the
        // Firebase console a few minutes after running your app with this method.
        void throwExceptionEvery60Updates()
        {
            if (updatesBeforeException > 0)
            {
                updatesBeforeException--;
            }
            else
            {
                // Set the counter to 60 updates
                updatesBeforeException = 60;
    
                // Throw an exception to test your Crashlytics implementation
                throw new System.Exception("test exception please ignore");
            }
        }
    }
    
  2. 建立您的應用程式並在建置完成後上傳符號資訊。

    • iOS+ :Firebase Unity 編輯器外掛程式會自動設定您的 Xcode 專案以上傳符號檔案。

    • Android :對於使用 IL2CPP 的 Android 應用,請執行 Firebase CLI crashlytics:symbols:upload指令來上傳符號檔。

  3. 運行您的應用程式。應用程式運行後,觀察設備日誌並等待CrashlyticsTester觸發異常。

    • iOS+ :在 Xcode 底部窗格中查看日誌。

    • Android :透過在終端機中執行以下命令來查看日誌: adb logcat

  4. 前往 Firebase 控制台的Crashlytics 儀表板以查看測試當機。

    如果刷新控制台後五分鐘後仍未看到測試崩潰,請啟用偵錯日誌記錄以查看您的應用程式是否正在傳送崩潰報告。


就是這樣! Crashlytics 現在正在監控您的應用程式是否崩潰。造訪Crashlytics 儀表板以查看和調查您的所有報告和統計資料。

下一步

  • (建議)對於使用 IL2CPP 的 Android 應用程序,透過收集 GWP-ASan 報告來獲取調試由本機記憶體錯誤引起的崩潰的幫助。這些與記憶體相關的錯誤可能與應用程式內的記憶體損壞有關,這是應用程式安全漏洞的主要原因。要利用此偵錯功能,請確保您的應用程式使用最新的 Crashlytics SDK for Unity (v10.7.0+) 並明確啟用 GWP-ASan (需要您修改 Android 應用程式清單)。
  • 透過新增選擇加入報告、日誌、金鑰和非致命錯誤追蹤來自訂崩潰報告設定
  • 與 Google Play 集成,以便您可以直接在 Crashlytics 儀表板中按 Google Play 追蹤過濾 Android 應用程式的崩潰報告。這使您可以更好地將儀表板集中在特定的建置上。