Catch up on everthing we announced at this year's Firebase Summit. Learn more

Обновление до Firebase Crashlytics SDK

Теперь вы можете настроить Crashlytics в своем приложении с помощью нового официального Firebase Crashlytics SDK, который предлагает улучшенные API, которые более совместимы с другими продуктами Firebase и более интуитивно понятны в использовании.

В этом руководстве описывается, как перейти на новый SDK из устаревшего SDK Fabric. В нем описаны изменения, которые происходят с новыми API-интерфейсами, причины изменений и способы обновления кода, если это необходимо.

Прежде чем вы начнете

Ткань добавляет GameObject s к сцене , чтобы инициализировать Crashlytics в игре, а также дополнительные каталоги , для самих SDKs.

Чтобы убедиться в отсутствии конфликтов между плагинами Fabric Crashlytics и Firebase Crashlytics, удалите следующие папки и файлы Fabric из своего проекта Unity:

  • Под активами, удалите следующие файлы:

    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
    
  • В окне иерархии, удалите следующие GameObjects

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE
        CrashlyticsInit             <- DELETE
    
  • Удалить все элементы ткани в Assets> Плагины> Android> AndroidManifest.xml.

    Например, известный ключ , чтобы удалить это: android:name="io.fabric.unity.android.FabricApplication"

    Найдите и удалите другие записи Fabric, если они существуют.

Шаг 1: Добавление файла конфигурации Firebase

  1. Откройте Настройки проекта . В ваших приложениях карты, выберите расслоение ID или имя пакета приложения , для которого требуется конфигурационный файл.

  2. Загрузите файл (ы) конфигурации Firebase для каждой платформы.

    • Для IOS + - GoogleService-Info.plist
    • Для Android - google-services.json

    Для одного проекта Unity у вас может быть не более двух файлов конфигурации.

  3. В Вашем проекте Unity, откройте окно проекта, а затем переместить конфигурационный файл (ы) в Assets папку.

Шаг 2: Добавьте Firebase Crashlytics SDK

  1. Скачать Unity SDK Firebase , а затем распаковать SDK где - то удобно.

    SDK Firebase Unity не зависит от платформы.

  2. В открытом проекте Unity, перейдите в Assets> Import Package> Индивидуальный пакет.

  3. Из распакованной SDK, выберите импортировать Crashlytics SDK ( FirebaseCrashlytics.unitypackage ). Убедитесь , что у вас есть FirebaseCrashlytics.unitypackage версии 6.15.0 или более поздней версии (если нет, то обновить версию пакета активов ). Это необходимо для того, чтобы отчеты о сбоях отображались в консоли Firebase.

    • Единство 2017.x и позже: Разрешить использование рамок .NET 4.x. Если ваш проект Unity использует .NET 4.x, импорт dotnet4/FirebaseCrashlytics.unitypackage .

    Обратите внимание , что вы можете импортировать любой другой поддерживаемый Firebase продукта , а также.

  4. В окне Import Unity Package, нажмите кнопку Импорт.

  5. Создать новый C # сценарий, а затем добавить его в GameObject в сцене.

    1. Откройте первую сцену, а затем создать пустой GameObject имени CrashlyticsInitializer .

    2. Нажмите кнопку Добавить компонент в Инспекторе для нового объекта.

    3. Выберите CrashlyticsInit скрипт , чтобы добавить его в CrashlyticsInitializer объекта.

  6. Инициализировать Crashlytics в сценарии Start методе:

    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()
      // ...
    }

После добавления и инициализации SDK Crashlytics автоматически приступает к работе, отслеживая и собирая отчеты о сбоях.

Шаг 3: Обновите код

Просмотрите следующие изменения SDK и внесите соответствующие обновления в свой код:

Crashlytics теперь меняет идентификаторы на основе идентификаторов установки Firebase.

Crashlytics использует UUID установки Crashlytics для идентификации экземпляров вашего приложения и связывания данных ваших пользователей с их устройствами. Ранее Crashlytics меняла UUID установки вашего пользователя при изменении рекламного идентификатора его устройства. Теперь Crashlytics меняет UUID установки на основе идентификатора установки Firebase (FID) пользователя. Для получения дополнительной информации посетите Управление идентификаторов установки Firebase .

Причина изменения

Использование FID совместимо с другими SDK Firebase.

Fabric.Crashlytics теперь называется Firebase.Crashlytics.

Мы изменили наше пространство имен из Fabric в Firebase .

Ткань

using Fabric.Crashlytics;

Firebase

using Firebase.Crashlytics;

RecordCustomException теперь LogException

Регистрируйте настраиваемые нефатальные исключения, которые были пойманы и обработаны.

Ткань

Crashlytics.RecordCustomException(string name, string reason, StackTrace stackTrace);
Crashlytics.RecordCustomException(string name, string reason, string stackTraceString);

Firebase

Crashlytics.LogException(Exception ex);

Причина изменения

Эта функция чаще всего используется для входа экземпляр Exception . Вместо того , чтобы требовать от вас , чтобы извлечь «имя», «разум», и «StackTrace» вручную (что приводит к избыточному коду), теперь вы можете предоставить экземпляр Exception и Firebase Crashlytics будет извлекать информацию, необходимыми.

Обходной путь

Если вы максимально эффективно использовать эти параметры в пути другой , чем просто потянув информацию непосредственно прочь исключение, вы можете выполнить предыдущее поведение, создавая свой собственный Exception подкласс с пользовательских метаданных в его описании.

SetKeyValue теперь SetCustomKey

Задайте любую пару ключ / значение для отправки вместе с отчетом о сбое. Повторная установка того же ключа обновит значение.

Ткань

Crashlytics.SetKeyValue(string key, string value);

Firebase

Crashlytics.SetCustomKey(string key, string value);

Причина изменения

Этот метод переименовывается, чтобы сделать его поведение более понятным и улучшить согласованность с другими API Firebase.

SetUserIdentifier теперь SetUserId

Установите идентификатор пользователя, чтобы понять, у какого пользователя произошел сбой.

Ткань

Crashlytics.SetUserIdentifier(string identifier);

Firebase

Crashlytics.SetUserId(string identifier);

Причина изменения

Этот метод переименовывается, чтобы улучшить согласованность с другими API Firebase. В качестве бонуса он короче; кто не любит сбривать ключевые штрихи?

SetUserEmail и SetUserName удалены.

Раньше вам было разрешено указать имя или адрес электронной почты, связанные со сбоем, с использованием явных методов. Они больше не будут определяться явно.

Ткань

Crashlytics.SetUserEmail(string email);
Crashlytics.SetUserName(string name);

Причина изменения

Google стремится защитить данные клиентов, и частью этих усилий является разработка API-интерфейсов, которые делают то же самое для инструментов разработчика. Эти пользовательские API-интерфейсы были удалены, чтобы поощрять использование сгенерированных и не идентифицирующих личность методов для определения того, какой пользователь пострадал от сбоя.

Обходной путь

Чтобы указать , какой пользователь испытал аварии, предпочтительным методом является использование SetUserId . Однако, если это не является логичным решением, та же функциональность может быть выполнена с использованием SetCustomKey .

Crash и ThrowNonFatal удалены.

Ранее Crashlytics предоставлял два служебных метода для создания исключений в целях тестирования. Они не будут включены в Firebase Crashlytics.

Ткань

Crashlytics.Crash();
Crashlytics.ThrowNonFatal();

Причина изменения

Crashlytics для Unity работает во многих различных средах, и может произойти множество различных сбоев. В этих методах не было четко указано, произошли ли в результате сбои в C # или в базовом собственном SDK, зависящем от платформы.

Обходной путь

  • Проверьте свою реализацию , заставляя краш - тест , который будет отправлять отчет об ошибке на приборную панель Crashlytics в консоли Firebase.

Шаг 4: Создайте свой проект

  1. Экспорт проекта с помощью диалогового окна построения единства в настройках.

  2. После завершения экспорта убедитесь, что проект экспортирован правильно, сравнив экспортированный проект с примерами конфигураций экспорта ниже.

    iOS +

    Android

  3. Если после сравнения вашего проекта кажется, что файлы отсутствуют: откройте редактор Unity, затем запустите Google Play Services Resolver (см. Инструкции ниже).

случае необходимости) Запустите распознаватель , если отсутствуют файлы после экспорта

Менеджер внешних зависимостей для Unity (EDM4U) гарантирует, что ваш проект Unity имеет соответствующие зависимости времени выполнения для платформ Apple и Android. Для получения более подробной информации о распознавателе, посетите README для Jar резольвера Unity .

Следующие шаги