本快速入門導覽課程說明如何在應用程式中設定 Firebase Crashlytics 整合 Firebase Crashlytics SDK,讓您可以全面瞭解 Firebase控制台中的報告。
如要設定 Crashlytics,您必須同時在 Firebase 控制台和 您的 IDE (例如新增 Firebase 設定檔和 Crashlytics SDK)。請先強制測試當機,這樣才能完成設定 向 Firebase 回報當機報告。
事前準備
新增 Firebase (如果還沒有的話) 加入 Unity 專案中如果您沒有 Unity 專案,可以 範例應用程式。
建議:自動取得 導覽標記記錄 瞭解引發當機、一般錯誤或 ANR 事件的使用者動作 您必須在 Firebase 專案中啟用 Google Analytics。
如果現有的 Firebase 專案沒有Google Analytics 啟用 Google Analytics,您可以前往 使用者介面的「整合」分頁
>專案設定Firebase)。 如要建立新的 Firebase 專案,請啟用「Google Analytics」 專案建立流程
步驟 1:在應用程式中新增 Crashlytics SDK
請注意,在 Firebase 專案中註冊 Unity 專案時, 且可能已下載 Firebase Unity SDK 並新增套件 所述。
下載 Firebase Unity SDK,然後將 SDK 解壓縮。 Firebase Unity SDK 不限於特定平台。
在開啟的 Unity 專案中,前往 素材資源 >「Import Package」>自訂套件。
在已解壓縮的 SDK 中,選取要匯入 Crashlytics SDK (
FirebaseCrashlytics.unitypackage
)。充分運用 導覽標記記錄 也請將 Google Analytics 的 Firebase SDK 加進您的應用程式 (
FirebaseAnalytics.unitypackage
)。請確認 已啟用 Google Analytics 。在「Import Unity Package」視窗中,按一下「Import」。
步驟 2:初始化 Crashlytics
建立新的 C# 指令碼,然後將其新增至場景中的
GameObject
。開啟第一個場景,
GameObject
建立名為CrashlyticsInitializer
。在新物件的「Inspector」(檢查工具) 中,按一下「Add Component」(新增元件)。
選取要新增至以下程式碼的
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:設定符號上傳功能
只有使用 IL2CPP 的 Android 應用程式才需要執行這個步驟。
如果 Android 應用程式使用 Unity 的 Mono 指令碼後端,請按照下列步驟操作 。
如果是 Apple 平台應用程式,則不必執行這些步驟,因為 Firebase Unity 編輯器外掛程式會自動設定 Xcode 專案以上傳符號。
Crashlytics 的 Unity SDK 8.6.1 以上版本會自動包含 NDK 當機回報功能, 可讓 Crashlytics 自動回報 Unity IL2CPP Android 系統當機不過,如要查看原生資料庫的符號化堆疊追蹤 Crashlytics 資訊主頁發生當機情形,您必須前往下列網址上傳符號資訊: 建構時間。Firebase
如要設定符號上傳功能,請按照操作說明 安裝 Firebase CLI。
如已安裝 CLI,請務必 更新至最新版本。
步驟 4:建立專案並上傳符號
iOS+ (Apple 平台)
在「Build Settings」對話方塊中,將專案匯出至 Xcode 工作區。
建構應用程式。
如果是 Apple 平台,Firebase Unity 編輯器外掛程式會自動安裝 這會設定您的 Xcode 專案,以便產生並上傳 將 Crashlytics 相容的符號檔提供給 Firebase 伺服器,
Android
在「Build Settings」對話方塊中,執行下列其中一項操作:
匯出至 Android Studio 專案來建立專案;或
直接透過 Unity 編輯器建立 APK。
建構前,請確認「建立符號.zip」核取方塊已勾選 已勾選「Build Settings」對話方塊。
建構完成後,產生與 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/SYMBOLS 是
unityLibrary/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」資訊主頁,您必須強制執行測試 當機。
找出現有的
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 編輯器外掛程式會自動設定您的 Xcode 專案來上傳符號檔案。
Android:如果是使用 IL2CPP 的 Android 應用程式,請執行 Firebase CLI
crashlytics:symbols:upload
指令上傳 符號檔案。
執行應用程式。應用程式執行後,查看裝置記錄並等待
CrashlyticsTester
中要觸發的例外狀況。iOS+:在 Xcode 的底部窗格查看記錄。
Android:在終端機中執行下列指令,即可查看記錄:
adb logcat
。
前往下列網址的 Crashlytics 資訊主頁: Firebase 控制台,查看測試當機情形。
重新整理控制台後,如未發現測試當機 五分鐘後 啟用偵錯記錄功能 查看應用程式是否傳送當機報告。
大功告成!「Crashlytics」正在監控應用程式的當機情形。 前往 Crashlytics 資訊主頁查看和調查問題 所有報表和統計資料
後續步驟
- (建議) 對於使用 IL2CPP 的 Android 應用程式, 可針對原生記憶體錯誤造成的當機問題加以偵錯 收集 GWP-ASan 報告。 這些記憶體相關錯誤可與 這是造成應用程式安全漏洞的主要原因。 如要使用這項偵錯功能,請確認您的應用程式 採用最新的 Crashlytics SDK for Unity (10.7.0 以上版本),並 已明確啟用 GWP-ASan (您必須 修改 Android 應用程式資訊清單)。
- 自訂當機報告設定 新增參與意願選項的報表、記錄、鍵和一般錯誤的追蹤。
- 與 Google Play 整合,讓 可以直接依下列路徑篩選 Android 應用程式的當機報告:Google Play Crashlytics資訊主頁。如此一來,您就能更專注於特定版本上的資訊主頁。