获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用 Firebase Crashlytics

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本快速入门介绍了如何使用 Firebase Crashlytics SDK 在您的应用中设置 Firebase Crashlytics,以便您可以在 Firebase 控制台中获得全面的崩溃报告。

设置 Crashlytics 需要在 Firebase 控制台和您的 IDE 中执行任务(例如添加 Firebase 配置文件和 Crashlytics SDK)。要完成设置,您需要强制测试崩溃以将您的第一个崩溃报告发送到 Firebase。

在你开始之前

  1. 如果您还没有,请将 Firebase 添加到您的 Unity 项目中。如果您没有 Unity 项目,可以下载示例应用程序

  2. 推荐:要获得无崩溃用户、面包屑日志和速度警报等功能,您需要在 Firebase 项目中启用 Google Analytics。

    • 如果您现有的 Firebase 项目没有启用 Google Analytics,您可以从 Firebase 控制台中 >项目设置集成选项卡启用 Google Analytics。

    • 如果您要创建新的 Firebase 项目,请在项目创建工作流程中启用 Google Analytics。

第 1 步:将 Crashlytics SDK 添加到您的应用

请注意,当您向 Firebase 项目注册 Unity 项目时,您可能已经下载了 Firebase Unity SDK 并添加了 Crashlytics 包。

  1. 下载Firebase Unity SDK ,然后将 SDK 解压缩到方便的位置。

    Firebase Unity SDK 不特定于平台。

  2. 在您打开的 Unity 项目中,导航到Assets > Import Package > Custom Package

  3. 从解压缩的 SDK 中,选择导入 Crashlytics SDK ( FirebaseCrashlytics.unitypackage )。

    您也可以导入任何其他受支持的 Firebase 产品

  4. 在“导入 Unity 包”窗口中,单击“导入”。

第 2 步:初始化 Crashlytics

  1. 创建一个新的 C# 脚本,然后将其添加到GameObject中的游戏对象。

    1. 打开您的第一个场景,然后创建一个名为GameObject的空游戏CrashlyticsInitializer

    2. 在新对象的检查器中单击添加组件

    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 步:(仅限 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+ (苹果平台)

  1. 从“构建设置”对话框中,将您的项目导出到 Xcode 工作区。

  2. 构建您的应用程序。

    对于 Apple 平台,Firebase Unity Editor 插件会自动配置您的 Xcode 项目,以便为每个构建生成与 Crashlytics 兼容的符号文件并将其上传到 Firebase 服务器。

安卓

  1. 在“构建设置”对话框中,执行以下操作之一:

    • 导出到 Android Studio 项目以构建您的项目;或者

    • 直接从 Unity 编辑器构建您的 APK。
      在构建之前,确保在构建设置对话框中选中了创建符号.zip的复选框。

  2. 构建完成后,生成一个与 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

    • 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 符号文件生成器而不是默认的 Breakpad 生成器

    不推荐使用。我们建议使用默认的 Breakpad 符号文件生成器。

    --generator=breakpad

    使用 Breakpad 符号文件生成器

    请注意,符号文件生成的默认值是 Breakpad。仅当您在构建配置中添加了symbolGenerator { csym() }并且您想要覆盖它以使用 Breakpad 时才使用此标志。

    --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 Editor 插件会自动配置您的 Xcode 项目以上传您的符号文件。

    • Android :对于使用 IL2CPP 的 Android 应用程序,运行 Firebase CLI crashlytics:symbols:upload命令以上传符号文件。

  3. 运行您的应用程序。应用程序运行后,查看设备日志并等待CrashlyticsTester触发异常。

    • iOS+ :在 Xcode 的底部窗格中查看日志。

    • Android :通过在终端中运行以下命令来查看日志: adb logcat

  4. 转到 Firebase 控制台的Crashlytics 仪表板以查看您的测试崩溃。

    如果您刷新了控制台,但五分钟后仍未看到测试崩溃,请启用调试日志记录以查看您的应用程序是否正在发送崩溃报告。


就是这样! Crashlytics 现在正在监控您的应用程序是否发生崩溃。访问Crashlytics 仪表板以查看和调查您的所有报告和统计信息。

下一步

  • 与 Google Play 集成,以便您可以直接在 Crashlytics 仪表板中按 Google Play 跟踪过滤 Android 应用程序的崩溃报告。这使您可以更好地将仪表板集中在特定构建上。