转到控制台

将 Unity 应用从 Fabric Crashlytics 迁移到 Firebase Crashlytics

Unity [测试版]

本快速入门介绍了如何将现有的 Fabric Crashlytics Unity 应用迁移到 Firebase Crashlytics,以便您可以在 Firebase 控制台中查看所有崩溃报告。

准备工作

Unity [测试版]

以下指南假设您有一个使用 Fabric 的有效的 Unity 应用。如果您在 Fabric 中没有现有的 Unity 应用,请按照面向 Crashlytics 新用户的使用入门说明进行操作。

Unity [测试版]

  1. 登录 Fabric,然后转到迁移流程

  2. 检查 Signed into Google as 字段是否列出与您的 Firebase 项目关联的 Google 帐号。如果未列出,请点击 Switch accounts 以选择正确的帐号。

  3. 依次点击 Get StartedStart Linking

  4. 将左侧的相应 Fabric 应用拖到右侧对应的 Firebase 项目中。

    请注意,您还可以创建新的 Firebase 项目。

  5. 点击 Link 1 app to Firebase

第 2 步:移除 Fabric

Unity [测试版]

Fabric 会将 GameObject 添加到您的场景中,以在您的游戏中以及 SDK 本身的其他目录中初始化 Crashlytics。

要确保 Fabric Crashlytics 和 Firebase Crashlytics 插件之间没有冲突,请从 Unity 项目中移除以下 Fabric 文件夹和文件:

  • Assets 下,删除以下文件:

    Assets/
       Editor Default Resources/
           FabricSettings.asset     <- DELETE
       Fabric/                      <- DELETE
       Plugins/
           Android/
               answers/             <- DELETE
               beta/                <- DELETE
               crashlytics/         <- DELETE
               crashlytics-wrapper/ <- DELETE
               fabric/              <- DELETE
               fabric-init/         <- DELETE
           iOS/
               Fabric/              <- DELETE
    
  • Hierarchy Window 中,移除以下 GameObject

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE
        CrashlyticsInit             <- DELETE
    
  • 移除 Assets > Plugins > Android > AndroidManifest.xml 中的所有 Fabric 条目。

    例如,已知要移除的一个密钥为:android:name="io.fabric.unity.android.FabricApplication"

    搜索并移除其他 Fabric 条目(如果有的话)。

第 3 步:添加 Firebase 配置文件

Unity [测试版]

  1. 访问 Firebase 控制台

  2. 在左上角,点击项目概览旁边的 settings,然后选择项目设置

  3. 对于新关联的应用,请为所关联的每个应用下载具体平台的 Firebase 配置文件。对于单个 Unity 项目,最多可以有两个配置文件。

    • 对于 iOSGoogleService-Info.plist
    • 对于 Androidgoogle-services.json
  4. 在 Unity 项目中,打开项目窗口,然后将您的配置文件移动到 Assets 文件夹中。

第 4 步:添加 Firebase Crashlytics SDK

Unity [测试版]

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

    Firebase Unity SDK 不专用于特定平台。

  2. 在您打开的 Unity 项目中,依次转到 Assets > Import Package > Custom Package

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

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

  4. 在“Import Unity Package”窗口中,点击 Import

第 5 步:初始化 Firebase Crashlytics

Unity [测试版]

  1. 创建一个新的 C# 脚本,然后将其添加到场景中的 GameObject

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

    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;
    
                      // WARNING: Do not call Crashlytics APIs from asynchronous tasks;
                      // they are not currently supported.
    
                      // 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()
          // ...
      }

添加并初始化 SDK 后,Crashlytics 就会立即自动开始侦听并收集崩溃报告。

第 6 步:替换 Fabric API 调用

Unity [测试版]

您需要负责对 API 进行一些更改。有关详情,请查看 Unity API 变更页面。

7 步:添加 Fabric API 密钥

Unity [测试版]

由于您的应用已与 Fabric 关联,因此您需要向 Firebase 提供该应用的 Fabric API 密钥。这可确保崩溃报告平稳过渡到 Firebase Crashlytics,并可让您在 Firebase Crashlytics 信息中心中查看所有历史数据。

  1. 在 Unity 项目中,依次选择 Window > Firebase > Crashlytics,打开 Firebase Crashlytics 菜单。

  2. Fabric API Key 下输入 Fabric API 密钥。

  3. 点击保存

第 8 步:构建项目

Unity [测试版]

将您的项目导出到 iOSAndroid 后,请验证该项目是否已正确导出。

如果在将您的项目与下面的示例导出配置进行比较后似乎缺少文件,请打开 Unity 编辑器,然后运行 Google Play Services Resolver

iOS

Android

运行解析器(可选)

Google Play Services Resolver 可确保您的 Unity 项目具有将应用导出到 iOSAndroid 的相应依赖项。

如需详细了解该解析器,请访问 Unity Jar Resolver 的自述文件。

iOS

iOS Resolver 会自动运行并利用 Cocoapods 将 iOS 依赖项放入导出的 Pods 目录中。

  • 要将 CocoaPods 下载到您的机器上,请执行以下操作:

    • 依次转到 Assets > Play Services Resolver > iOS Resolver > Install Cocoapods
  • 要允许或禁止生成 Podfile(可选),请执行以下操作:

    • 依次转到 Assets > Play Services Resolver > iOS Resolver > Settings

Android

Android Resolver 会自动运行,并利用 gradle 将 Android 依赖项放入 Assets/Plugins/Android 中。

  • 要手动运行该解析器,请执行以下操作:

    • 依次转到 Assets > Play Services Resolver > Android Resolver > Resolve
  • 要启用或停用自动解析(默认情况下处于启用状态),请执行以下操作:

    • 依次转到 Assets > Play Services Resolver > Android Resolver > Settings

后续步骤

  • 测试您的实现 - 强制让崩溃发生以便在 Firebase 控制台中生成崩溃报告,从而测试您的 Crashlytics 设置。

  • 自定义崩溃报告 - 在您添加 SDK 后,Crashlytics 就会立即自动开始收集崩溃报告,但您也可以通过添加自选式报告、日志、键甚至跟踪非严重错误来自定义您的设置。

  • 了解 API 变更 - 了解 Crashlytics 如何从 Fabric Crashlytics 演变为 Firebase Crashlytics。

  • 添加 Google Analytics for Firebase - 将 Google Analytics for Firebase 的强大功能与 Firebase Crashlytics 结合使用,以在 Firebase 控制台中查看有关未遇到崩溃的用户的统计信息。