開始使用 Firebase Crashlytics

本快速入門導覽課程說明如何在應用程式中設定 Firebase Crashlytics 與 Firebase Crashlytics SDK 搭配使用,讓您可以全面掌握當機事件 。

如要設定 Crashlytics,必須先在 Firebase 控制台和 您的 IDE (例如新增 Firebase 設定檔和 Crashlytics) SDK)。請先強制測試當機,這樣才能完成設定 向 Firebase 回報當機報告。

事前準備

  1. 新增 Firebase (如果還沒有的話) 加入 Unity 專案中如果您沒有 Unity 專案,可以 範例應用程式

  2. 建議:自動取得 導覽標記記錄 瞭解引發當機、一般錯誤或 ANR 事件的使用者動作 您必須在 Firebase 專案中啟用 Google Analytics。

    • 如果你現有的 Firebase 專案沒有 Google Analytics 您可以在該頁面啟用 Google Analytics Ad Manager 的「Integrations分頁 >專案設定

    • 如要建立新的 Firebase 專案,請啟用 Google Analytics 專案建立流程

步驟 1:在應用程式中加入 Crashlytics SDK

請注意,在 Firebase 專案中註冊 Unity 專案時, 且可能已下載 Firebase Unity SDK 並新增套件 所述。

  1. 下載 Firebase Unity SDK,然後將 SDK 解壓縮在方便的位置。 Firebase Unity SDK 並非平台專用。

  2. 在開啟的 Unity 專案中,前往 素材資源 >「Import Package」 >自訂套件

  3. 在已解壓縮的 SDK 中選取要匯入的 Crashlytics SDK (FirebaseCrashlytics.unitypackage)。

    充分運用 導覽標記記錄 此外,將 Google Analytics 專用 Firebase SDK 加進應用程式 (FirebaseAnalytics.unitypackage)。請確認 已啟用 Google Analytics

  4. 在「Import Unity Package」視窗中,按一下「Import」

步驟 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 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設定符號上傳功能

只有使用 IL2CPP 的 Android 應用程式才需要執行這個步驟。

  • 如果 Android 應用程式使用 Unity 的 Mono 指令碼後端,請按照下列步驟操作 。

  • 如果是 Apple 平台應用程式,則不必執行這些步驟,因為 Firebase Unity 編輯器外掛程式會自動設定 Xcode 專案以上傳符號。

Crashlytics 的 Unity SDK 8.6.1 以上版本會自動包含 NDK 當機回報功能, 可讓 Crashlytics 自動記錄 Unity IL2CPP Android 系統當機不過,如要查看原生資料庫的符號化堆疊追蹤 Crashlytics 資訊主頁當機。如要上傳符號資訊,請前往 建構時間

如要設定符號上傳功能,請按照操作說明 安裝 Firebase CLI

如已安裝 CLI,請務必 更新至最新版本

步驟 4:建立專案並上傳符號

iOS+ (Apple 平台)

  1. 在「Build Settings」對話方塊中,將專案匯出至 Xcode 工作區。

  2. 建構應用程式。

    如果是 Apple 平台,Firebase Unity 編輯器外掛程式會自動安裝 這會設定您的 Xcode 專案,以便產生並上傳 與 Crashlytics 相容的符號檔案,可以連結至每個版本的 Firebase 伺服器。

Android

  1. 在「Build Settings」對話方塊中,執行下列其中一項操作:

    • 匯出至 Android Studio 專案來建立專案;或

    • 直接透過 Unity 編輯器建立 APK。
      建構前,請確認「建立符號.zip」核取方塊已勾選 已勾選「Build Settings」對話方塊。

  2. 建構作業完成後,產生與 Crashlytics 相容的符號 並執行下列指令,將檔案上傳到 Firebase 伺服器 Firebase CLI 指令:

    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 符號檔案產生器,而非 預設斷路板產生器

    不建議使用。建議您使用預設值 換行符號符號檔案產生器。

    --generator=breakpad

    使用 Breakpad 符號檔案產生器

    請注意,產生符號檔案的預設設定為 Breakpad。 只有在已加入 symbolGenerator { csym() } 並想覆寫建構設定中的 請改用換行符號。

    --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. 前往下列網址的 Crashlytics 資訊主頁: Firebase 控制台,查看測試當機情形。

    重新整理控制台後,如未發現測試當機 五分鐘後 啟用偵錯記錄功能 查看應用程式是否傳送當機報告。


大功告成!Crashlytics 正在監控應用程式的當機情形。 前往 Crashlytics 資訊主頁查看和調查問題 所有報表和統計資料

後續步驟

  • (建議) 對於使用 IL2CPP 的 Android 應用程式, 可針對原生記憶體錯誤造成的當機問題加以偵錯 收集 GWP-ASan 報告。 這些記憶體相關錯誤可與 這是造成應用程式安全漏洞的主要原因。 如要使用這項偵錯功能,請確認您的應用程式 使用最新的 Crashlytics SDK for Unity (10.7.0 以上版本),並 已明確啟用 GWP-ASan (您必須 修改 Android 應用程式資訊清單)。
  • 與 Google Play 整合,讓 您可以直接前往 Crashlytics 資訊主頁。如此一來,您就能更專注於特定版本上的資訊主頁。