Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

开始使用 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. Inspector中为新对象单击Add Component

    3. 选择您的CrashlyticsInit脚本以将其添加到CrashlyticsInitializer对象。

  2. 在脚本的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 上传符号信息。

完成以下步骤以设置符号上传:

  1. 按照说明安装 Firebase CLI

    如果您已经安装了 CLI,请确保更新到其最新版本

  2. (仅适用于使用 Android API 级别 30+ 的应用)更新应用的AndroidManifest.xml模板以禁用指针标记:

    1. 选中Android Player Settings > Publishing Settings > Build > Custom Main Manifest复选框。

    2. 打开位于Assets/Plugins/Android/AndroidManifest.xml的清单模板。

    3. 将以下属性添加到应用程序标签: <application android:allowNativeHeapPointerTagging="false" ... />

第 4 步:构建您的项目并上传符号

iOS+ (苹果平台)

  1. Build Settings对话框中,将您的项目导出到 Xcode 工作区。

  2. 构建您的应用程序。

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

安卓

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

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

    • 直接从 Unity 编辑器构建您的 APK。
      在构建之前,请确保在Build Settings对话框中选中Create symbols.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 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");
            }
        }
    }
    
  2. 构建完成后构建您的应用并上传符号信息。

    • iOS+ :Firebase Unity Editor 插件会自动配置您的 Xcode 项目以上传您的符号文件。

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

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

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

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

  4. 当您在设备日志中看到异常时,请重新启动您的应用,以便它可以将崩溃报告发送到 Firebase。

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

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


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

下一步

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