Начните работу с 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+ : Плагин редактора Unity Firebase автоматически настраивает ваш проект XCode для загрузки файла символов.

    • Android : для ваших приложений для Android, которые используют IL2CPP, запустите CRASHLYTICS Firebase 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 Track непосредственно на панели Crashlytics . Это позволяет вам лучше сосредоточить свою панель инструментов на определенных сборках.