本快速入门介绍了如何使用 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
中的游戏对象。打开您的第一个场景,然后创建一个名为
GameObject
的空游戏CrashlyticsInitializer
。在新对象的检查器中单击添加组件。
选择您的
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 应用程序的崩溃报告。这使您可以更好地将仪表板集中在特定构建上。