В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью Firebase Crashlytics SDK, чтобы вы могли получать исчерпывающие отчеты о сбоях в консоли Firebase .
Настройка Crashlytics требует задач как в консоли Firebase , так и в вашей IDE (например, добавление файла конфигурации Firebase и Crashlytics SDK). Чтобы завершить настройку, вам нужно будет принудительно выполнить тестовый сбой, чтобы отправить первый отчет о сбое в Firebase.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Unity. Если у вас нет проекта Unity, вы можете загрузить пример приложения .
Рекомендуется : чтобы автоматически получать журналы навигации для понимания действий пользователя, приводящих к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в вашем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего
Firebase . > Настройки проекта в консолиЕсли вы создаете новый проект Firebase, включите Google Analytics во время процесса создания проекта.
Шаг 1 : Добавьте Crashlytics SDK в свое приложение
Обратите внимание, что когда вы регистрировали свой проект Unity в проекте Firebase, вы, возможно, уже загрузили Firebase Unity SDK и добавили пакеты, описанные в следующих шагах.
Загрузите Firebase Unity SDK , затем распакуйте SDK в удобное место. Firebase Unity SDK не привязан к платформе.
В открытом проекте Unity перейдите в раздел Assets > Import Package > Custom Package .
Из распакованного SDK выберите импорт Crashlytics SDK (
FirebaseCrashlytics.unitypackage
).Чтобы воспользоваться журналами навигации, также добавьте Firebase SDK для Google Analytics в свое приложение (
FirebaseAnalytics.unitypackage
). Убедитесь, что Google Analytics включен в вашем проекте Firebase.В окне «Импорт пакета Unity» нажмите «Импорт» .
Шаг 2 : Инициализация Crashlytics
Создайте новый скрипт C#, затем добавьте его в
GameObject
на сцене.Откройте первую сцену, затем создайте пустой
GameObject
с именемCrashlyticsInitializer
.Нажмите Добавить компонент в инспекторе для нового объекта.
Выберите скрипт
Crashlytics Init
, чтобы добавить его к объектуCrashlyticsInitializer
.
Инициализируйте 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)
В диалоговом окне «Параметры сборки» экспортируйте свой проект в рабочую область Xcode.
Создайте свое приложение.
Для платформ Apple плагин Firebase Unity Editor автоматически настраивает ваш проект Xcode для генерации и загрузки совместимого с Crashlytics файла символов на серверы Firebase для каждой сборки.
андроид
В диалоговом окне «Параметры сборки» выполните одно из следующих действий:
Экспортируйте в проект Android Studio для сборки своего проекта; или
Создавайте APK-файлы непосредственно в редакторе Unity.
Перед сборкой убедитесь, что в диалоговом окне «Параметры сборки» установлен флажок «Создать символы.zip» .
После завершения сборки сгенерируйте файл символов, совместимый с 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
Вот два способа найти идентификатор вашего приложения Firebase:
В файле
google-services.json
ваш идентификатор приложения — это значениеmobilesdk_app_id
; илиВ консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки Ваши приложения , затем нажмите на нужное приложение Firebase, чтобы найти его идентификатор приложения.
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 , необходимо принудительно выполнить тестовый сбой.
Найдите существующий
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"); } } }
Создайте свое приложение и загрузите информацию о символах после завершения сборки.
iOS+ : плагин Firebase Unity Editor автоматически настраивает ваш проект Xcode для загрузки файла символов.
Android : для приложений Android, использующих IL2CPP, выполните команду Firebase CLI
crashlytics:symbols:upload
, чтобы загрузить файл символов.
Запустите свое приложение. После запуска приложения просмотрите журнал устройства и дождитесь срабатывания исключения от
CrashlyticsTester
.iOS+ : просмотр журналов на нижней панели Xcode.
Android : просмотрите журналы, выполнив следующую команду в терминале:
adb logcat
.
Перейдите на панель управления 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 . Это позволяет вам лучше сфокусировать панель на определенных сборках.