Check out what’s new from Firebase at Google I/O 2022. Learn more

開始使用 Firebase Crashlytics

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

設置 Crashlytics 需要在 Firebase 控制台和您的 IDE 中執行任務(例如添加 Firebase 配置文件和 Crashlytics SDK)。要完成設置,您需要強制測試崩潰以將您的第一個崩潰報告發送到 Firebase。

在你開始之前

  1. 如果您還沒有,請將 Firebase 添加到您的 Unity 項目中。如果您沒有 Unity 項目,可以下載示例應用程序

  2. 推薦:要獲得無崩潰用戶、麵包屑日誌和速度警報等功能,您需要在 Firebase 項目中啟用 Google Analytics。

    • 如果您現有的 Firebase 項目未啟用 Google Analytics,您可以從 Firebase 控制台中 >項目設置集成選項卡啟用 Google Analytics。

    • 如果您要創建新的 Firebase 項目,請在項目創建工作流程中啟用 Google Analytics。

第 1 步:將 Firebase Crashlytics SDK 添加到您的應用

請注意,當您使用 Firebase 項目註冊 Unity 項目時,您可能已經下載了 Firebase Unity SDK 並添加了 Crashlytics 包。

  1. 下載Firebase Unity SDK ,然後在方便的地方解壓 SDK。

    Firebase Unity SDK 不是特定於平台的。

  2. 在您打開的 Unity 項目中,導航到Assets > Import Package > Custom Package

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

    您也可以導入任何其他受支持的 Firebase 產品

  4. 在“導入 Unity 包”窗口中,單擊“導入”。

第 2 步:初始化 Crashlytics

  1. 創建一個新的 C# 腳本,然後將其添加到場景中的GameObject

    1. 打開您的第一個場景,然後創建一個名為GameObject的空遊戲CrashlyticsInitializer

    2. Inspector中為新對象單擊Add Component

    3. 選擇您的CrashlyticsInit腳本以將其添加到CrashlyticsInitializer對象。

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

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase
    using Firebase;
    
    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;
    
                    // 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 上傳符號信息。

完成以下步驟以設置符號上傳:

  1. 按照說明安裝 Firebase CLI

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

  2. (僅適用於使用 Android API 級別 30+ 的應用)更新應用的AndroidManifest.xml模板以禁用指針標記:

    1. 選中Android Player Settings > Publishing Settings > Build > Custom Main Manifest複選框。

    2. 打開位於Assets/Plugins/Android/AndroidManifest.xml的清單模板。

    3. 將以下屬性添加到應用程序標籤: <application android:allowNativeHeapPointerTagging="false" ... />

第 4 步:構建您的項目並上傳符號

iOS+ (蘋果平台)

  1. Build Settings對話框中,將您的項目導出到 Xcode 工作區。

  2. 構建您的應用程序。

    對於 Apple 平台,Firebase Unity Editor 插件會自動配置您的 Xcode 項目,以便為每個構建生成與 Crashlytics 兼容的符號文件並將其上傳到 Firebase 服務器。

安卓

  1. 在“構建設置”對話框中,執行以下操作之一:

    • 導出到 Android Studio 項目以構建您的項目;或者

    • 直接從 Unity 編輯器構建您的 APK。
      在構建之前,請確保在Build Settings對話框中選中Create symbols.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 non-fatal errors 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 Editor 插件會自動配置您的 Xcode 項目以上傳您的符號文件。

    • Android :對於使用 IL2CPP 的 Android 應用,運行 Firebase CLI crashlytics:symbols:upload命令以上傳符號文件。

  3. 運行您的應用程序。一旦您的應用程序運行,請查看設備日誌並等待從CrashlyticsTester觸發異常。

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

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

  4. 當您在設備日誌中看到異常時,請重新啟動您的應用,以便它可以將崩潰報告發送到 Firebase。

  5. 轉到 Firebase 控制台的Crashlytics 儀表板以查看您的測試崩潰。

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


就是這樣! Crashlytics 現在正在監控您的應用程序是否發生崩潰。訪問Crashlytics 儀表板以查看和調查您的所有報告和統計信息。

下一步

  • 與 Google Play 集成,以便您可以直接在 Crashlytics 儀表板中按 Google Play 跟踪過濾您的 Android 應用程序的崩潰報告。這使您可以更好地將儀表板集中在特定的構建上。