Начните работу с Firebase Crashlytics

В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью Firebase Crashlytics SDK, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase.

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

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

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

  2. Рекомендуется : чтобы автоматически получать журналы навигации и понимать действия пользователей, приведшие к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в своем проекте Firebase.

    • Если в вашем существующем проекте Firebase не включен Google Analytics, вы можете включить Google Analytics на вкладке «Интеграции» вашего аккаунта. > Настройки проекта в консоли Firebase.

    • Если вы создаете новый проект Firebase, включите Google Analytics во время рабочего процесса создания проекта.

Шаг 1. Добавьте Crashlytics SDK в свое приложение.

Обратите внимание: когда вы регистрировали свой проект Unity в проекте Firebase, вы, возможно, уже загрузили Firebase Unity SDK и добавили пакеты, описанные в следующих шагах.

  1. Загрузите Firebase Unity SDK , затем разархивируйте SDK в удобное место. Firebase Unity SDK не зависит от платформы.

  2. В открытом проекте Unity перейдите в Assets > Import Package > Custom Package .

  3. В разархивированном SDK выберите импорт Crashlytics SDK ( FirebaseCrashlytics.unitypackage ).

    Чтобы воспользоваться преимуществами навигационных журналов , добавьте в свое приложение Firebase SDK для Google Analytics ( FirebaseAnalytics.unitypackage ). Убедитесь, что Google Analytics включен в вашем проекте Firebase.

  4. В окне «Импорт пакета Unity» нажмите «Импорт» .

Шаг 2. Инициализируйте Crashlytics

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

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

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

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

  2. Инициализируйте Crashlytics в методе Start скрипта:

    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) Настройте загрузку символов.

Этот шаг необходим только для приложений Android, использующих IL2CPP.

  • Для приложений Android, использующих серверную часть сценариев Unity Mono, эти шаги не требуются.

  • Для приложений платформы Apple эти шаги не нужны, поскольку плагин Firebase Unity Editor автоматически настраивает ваш проект Xcode для загрузки символов.

Unity SDK 8.6.1+ от Crashlytics автоматически включает отчеты о сбоях NDK, что позволяет Crashlytics автоматически сообщать о сбоях Unity IL2CPP на Android. Однако, чтобы увидеть символизированные трассировки стека для сбоев встроенной библиотеки на панели управления Crashlytics, вам необходимо загрузить информацию о символах во время сборки с помощью Firebase CLI.

Чтобы настроить загрузку символов, следуйте инструкциям по установке Firebase CLI .

Если вы уже установили CLI, обязательно обновите его до последней версии .

Шаг 4. Создайте свой проект и загрузите символы.

iOS+ (платформа Apple)

  1. В диалоговом окне «Параметры сборки» экспортируйте проект в рабочую область Xcode.

  2. Создайте свое приложение.

    Для платформ Apple плагин Firebase Unity Editor автоматически настраивает ваш проект Xcode для создания и загрузки файла символов, совместимого с Crashlytics, на серверы Firebase для каждой сборки.

Андроид

  1. В диалоговом окне «Параметры сборки» выполните одно из следующих действий:

    • Экспортируйте в проект Android Studio для создания своего проекта; или

    • Создайте свой APK прямо из редактора Unity.
      Перед сборкой убедитесь, что в диалоговом окне «Параметры сборки» установлен флажок « Создать символы.zip» .

  2. После завершения сборки создайте файл символов, совместимый с Crashlytics, и загрузите его на серверы Firebase, выполнив следующую команду Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : идентификатор вашего приложения Firebase для Android (а не имя вашего пакета).
      Пример идентификатора приложения Firebase для Android: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : путь к файлу символов, созданному CLI.

      • Экспортируется в проект Android Studio. PATH/TO/SYMBOLS — это каталог unityLibrary/symbols , который создается в корне экспортированного проекта после сборки приложения с помощью Gradle или Android Studio.

      • Создан APK непосредственно из Unity. 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 и просмотреть исходные данные на панели управления Crashlytics консоли Firebase, необходимо принудительно завершить тест.

  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 : для приложений Android, использующих IL2CPP, запустите команду Firebase CLI crashlytics:symbols:upload , чтобы загрузить файл символов.

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

    • iOS+ : просмотр журналов на нижней панели Xcode.

    • Android : просмотрите журналы, выполнив в терминале следующую команду: adb logcat .

  4. Перейдите на панель управления Crashlytics консоли Firebase, чтобы увидеть сбой вашего теста.

    Если вы обновили консоль и по-прежнему не видите сбой теста через пять минут, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.


Вот и все! Crashlytics теперь отслеживает ваше приложение на предмет сбоев. Посетите панель управления Crashlytics , чтобы просмотреть и изучить все ваши отчеты и статистику.

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

  • (Рекомендуется) Для приложений Android, использующих IL2CPP, получите помощь в отладке сбоев, вызванных ошибками собственной памяти, собрав отчеты GWP-ASan . Эти ошибки, связанные с памятью, могут быть связаны с повреждением памяти вашего приложения, что является основной причиной уязвимостей безопасности приложений. Чтобы воспользоваться этой функцией отладки, убедитесь, что ваше приложение использует последнюю версию Crashlytics SDK для Unity (v10.7.0+) и в нем явно включен GWP-ASan (требуется изменить манифест приложения Android ).
  • Интегрируйтесь с Google Play , чтобы можно было фильтровать отчеты о сбоях вашего приложения Android по трекам Google Play прямо на панели управления Crashlytics. Это позволяет вам лучше сосредоточить панель управления на конкретных сборках.