本快速入門介紹如何使用 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 步:將 Firebase 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
。打開您的第一個場景,然後創建一個名為
GameObject
的空遊戲CrashlyticsInitializer
。在Inspector中為新對象單擊Add Component 。
選擇您的
CrashlyticsInit
腳本以將其添加到CrashlyticsInitializer
對象。
在腳本的
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 上傳符號信息。
完成以下步驟以設置符號上傳:
按照說明安裝 Firebase CLI 。
如果您已經安裝了 CLI,請確保更新到其最新版本。
(僅適用於使用 Android API 級別 30+ 的應用)更新應用的
AndroidManifest.xml
模板以禁用指針標記:選中Android Player Settings > Publishing Settings > Build > Custom Main Manifest複選框。
打開位於
Assets/Plugins/Android/AndroidManifest.xml
的清單模板。將以下屬性添加到應用程序標籤:
<application android:allowNativeHeapPointerTagging="false" ... />
第 4 步:構建您的項目並上傳符號
iOS+ (蘋果平台)
從Build Settings對話框中,將您的項目導出到 Xcode 工作區。
構建您的應用程序。
對於 Apple 平台,Firebase Unity Editor 插件會自動配置您的 Xcode 項目,以便為每個構建生成與 Crashlytics 兼容的符號文件並將其上傳到 Firebase 服務器。
安卓
在“構建設置”對話框中,執行以下操作之一:
導出到 Android Studio 項目以構建您的項目;或者
直接從 Unity 編輯器構建您的 APK。
在構建之前,請確保在Build Settings對話框中選中Create symbols.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 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"); } } }
構建完成後構建您的應用並上傳符號信息。
iOS+ :Firebase Unity Editor 插件會自動配置您的 Xcode 項目以上傳您的符號文件。
Android :對於使用 IL2CPP 的 Android 應用,運行 Firebase CLI
crashlytics:symbols:upload
命令以上傳符號文件。
運行您的應用程序。一旦您的應用程序運行,請查看設備日誌並等待從
CrashlyticsTester
觸發異常。iOS+ :在 Xcode 的底部窗格中查看日誌。
Android :通過在終端中運行以下命令來查看日誌:
adb logcat
。
當您在設備日誌中看到異常時,請重新啟動您的應用,以便它可以將崩潰報告發送到 Firebase。
轉到 Firebase 控制台的Crashlytics 儀表板以查看您的測試崩潰。
如果您已刷新控制台,但五分鐘後仍未看到測試崩潰,請啟用調試日誌記錄以查看您的應用是否正在發送崩潰報告。
就是這樣! Crashlytics 現在正在監控您的應用程序是否發生崩潰。訪問Crashlytics 儀表板以查看和調查您的所有報告和統計信息。
下一步
- 通過添加選擇加入報告、日誌、密鑰和跟踪非致命錯誤來自定義您的崩潰報告設置。
- 與 Google Play 集成,以便您可以直接在 Crashlytics 儀表板中按 Google Play 跟踪過濾您的 Android 應用程序的崩潰報告。這使您可以更好地將儀表板集中在特定的構建上。