Начните работу с 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. Выберите скрипт Crashlytics Init , чтобы добавить его к объекту 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, использующих скриптовый бэкэнд Mono Unity, эти шаги не требуются.

  • Для приложений платформы 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 App Manifest ).
  • Интеграция с Google Play , чтобы вы могли фильтровать отчеты о сбоях вашего приложения Android по треку Google Play непосредственно на панели Crashlytics . Это позволяет вам лучше сфокусировать панель на определенных сборках.