本快速入門介紹瞭如何使用 Firebase Crashlytics SDK 在您的應用中設置 Firebase Crashlytics,以便您可以在 Firebase 控制台中獲得全面的崩潰報告。
設置 Crashlytics 需要在 Firebase 控制台和您的 IDE 中執行任務(例如添加 Firebase 配置文件和 Crashlytics SDK)。要完成設置,您需要強制測試崩潰以將您的第一個崩潰報告發送到 Firebase。
在你開始之前
如果您還沒有,請將 Firebase 添加到您的 Unity 項目中。如果您沒有 Unity 項目,可以下載示例應用程序。
推薦:要獲得無崩潰用戶、麵包屑日誌和速度警報等功能,您需要在 Firebase 項目中啟用 Google Analytics。
如果您現有的 Firebase 項目沒有啟用 Google Analytics,您可以從 Firebase 控制台中集成選項卡啟用 Google Analytics。
>項目設置的如果您要創建新的 Firebase 項目,請在項目創建工作流程中啟用 Google Analytics。
第 1 步:將 Crashlytics SDK 添加到您的應用
請注意,當您向 Firebase 項目註冊 Unity 項目時,您可能已經下載了 Firebase Unity SDK 並添加了 Crashlytics 包。
下載Firebase Unity SDK ,然後將 SDK 解壓縮到方便的位置。
Firebase Unity SDK 不特定於平台。
在您打開的 Unity 項目中,導航到Assets > Import Package > Custom Package 。
從解壓縮的 SDK 中,選擇導入 Crashlytics SDK (
FirebaseCrashlytics.unitypackage
)。您也可以導入任何其他受支持的 Firebase 產品。
在“導入 Unity 包”窗口中,單擊“導入” 。
第 2 步:初始化 Crashlytics
創建一個新的 C# 腳本,然後將其添加到場景中的
GameObject
。打開您的第一個場景,然後創建一個名為
CrashlyticsInitializer
的空GameObject
。在新對象的檢查器中單擊添加組件。
選擇您的
CrashlyticsInit
腳本以將其添加到CrashlyticsInitializer
對象。
在腳本的
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 Editor 插件會自動配置您的 Xcode 項目以上傳符號。
Crashlytics 的 Unity SDK 8.6.1+ 自動包含 NDK 崩潰報告,這允許 Crashlytics 自動報告 Android 上的 Unity IL2CPP崩潰。但是,要在 Crashlytics 儀表板中查看本機庫崩潰的符號化堆棧跟踪,您必須在構建時使用 Firebase CLI 上傳符號信息。
要設置符號上傳,請按照說明安裝 Firebase CLI 。
如果您已經安裝了 CLI,請確保更新到最新版本。
第 4 步:構建您的項目並上傳符號
iOS+ (蘋果平台)
從“構建設置”對話框中,將您的項目導出到 Xcode 工作區。
構建您的應用程序。
對於 Apple 平台,Firebase Unity Editor 插件會自動配置您的 Xcode 項目,以便為每個構建生成與 Crashlytics 兼容的符號文件並將其上傳到 Firebase 服務器。
安卓
在“構建設置”對話框中,執行以下操作之一:
導出到 Android Studio 項目以構建您的項目;或者
直接從 Unity 編輯器構建您的 APK。
在構建之前,確保在構建設置對話框中選中了創建符號.zip的複選框。
構建完成後,生成一個與 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
以下是查找您的 Firebase 應用 ID 的兩種方法:
在你的
google-services.json
文件中,你的App ID就是mobilesdk_app_id
值;或者在 Firebase 控制台中,轉到您的項目設置。向下滾動到您的應用卡片,然後點擊所需的 Firebase 應用以查找其應用 ID。
PATH/TO/SYMBOLS : CLI 生成的符號文件的路徑
導出到 Android Studio 項目 — PATH/TO/SYMBOLS是
unityLibrary/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 儀表板中查看初始數據,您需要強制測試崩潰。
找到一個現有的
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"); } } }
構建您的應用程序並在構建完成後上傳符號信息。
iOS+ :Firebase Unity Editor 插件會自動配置您的 Xcode 項目以上傳您的符號文件。
Android :對於使用 IL2CPP 的 Android 應用程序,運行 Firebase CLI
crashlytics:symbols:upload
命令以上傳符號文件。
運行您的應用程序。應用程序運行後,查看設備日誌並等待
CrashlyticsTester
觸發異常。iOS+ :在 Xcode 的底部窗格中查看日誌。
Android :通過在終端中運行以下命令來查看日誌:
adb logcat
。
轉到 Firebase 控制台的Crashlytics 儀表板以查看您的測試崩潰。
如果您刷新了控制台,但五分鐘後仍未看到測試崩潰,請啟用調試日誌記錄以查看您的應用程序是否正在發送崩潰報告。
就是這樣! Crashlytics 現在正在監控您的應用程序是否發生崩潰。訪問Crashlytics 儀表板以查看和調查您的所有報告和統計信息。
下一步
- 通過添加選擇加入報告、日誌、密鑰和非致命錯誤跟踪來自定義您的崩潰報告設置。
- 與 Google Play 集成,以便您可以直接在 Crashlytics 儀表板中按 Google Play 跟踪過濾 Android 應用程序的崩潰報告。這使您可以更好地將儀表板集中在特定構建上。