| Выберите платформу: | iOS+ Android Android NDK Flutter Unity |
Из этого руководства вы узнаете, как начать работу с Firebase Crashlytics в проекте Unity.
После того как вы настроите Firebase Crashlytics SDK в приложении, в консоли Firebase станут доступны подробные отчеты о сбоях.
Настройка Crashlytics требует выполнения задач как в консоли Firebase, так и в IDE (например, добавления файла конфигурации Firebase и SDK Crashlytics). Чтобы завершить настройку, вам нужно вызвать тестовый сбой, чтобы отправить первый отчет о сбое в Firebase.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект Unity. Если у вас нет проекта Unity, вы можете скачать пример приложения.
Рекомендуется. Чтобы автоматически получать журналы навигации и понимать, какие действия пользователя привели к сбою, некритической ошибке или событию ANR, включите Google Analytics в проекте Firebase.
Если вы создаете новый проект Firebase, включите Google Analytics в процессе его создания.
Если вы используете имеющийся проект Firebase, в котором не включена Google Analytics, откройте
Настройки > Интеграции на консоли Firebase и включите ее.
Шаг 1. Добавьте в приложение SDK Crashlytics
Обратите внимание, что при регистрации проекта Unity в проекте Firebase вы могли уже скачать Firebase Unity SDK и добавить пакеты, описанные в следующих шагах.
Скачайте Firebase Unity SDK и распакуйте его в удобном месте. Firebase Unity SDK не зависит от платформы.
В открытом проекте Unity выберите Assets (Ресурсы) > Import Package (Импортировать пакет) > Custom Package (Собственный пакет).
В распакованном SDK выберите для импорта файл Crashlytics SDK (
FirebaseCrashlytics.unitypackage).Чтобы использовать журналы навигационной цепочки, добавьте в приложение Firebase SDK для Google Analytics (
FirebaseAnalytics.unitypackage). Убедитесь, что в проекте Firebase включена Google Аналитика.В окне Import Unity Package нажмите Import.
Шаг 2. Инициализируйте Crashlytics
Создайте новый скрипт C# и добавьте его в
GameObjectна сцене.Откройте первую сцену и создайте пустой объект
GameObjectс названиемCrashlyticsInitializer.Нажмите Add Component (Добавить компонент) в Inspector (Инспектор) для нового объекта.
Выберите скрипт
CrashlyticsInit, чтобы добавить его в объект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 для загрузки символов.
В Crashlytics SDK для Unity (версия 8.6.1 и более поздние) автоматически включена функция отправки отчетов о сбоях NDK, которая позволяет Crashlytics автоматически сообщать о сбоях IL2CPP в Unity на устройствах Android. Однако, чтобы видеть расшифрованные стеки вызовов для сбоев нативных библиотек на панели управления Crashlytics, необходимо загрузить информацию о символах во время сборки с помощью интерфейса командной строки Firebase.
Чтобы настроить загрузку символов, следуйте инструкциям по установке Firebase CLI.
Если вы уже установили CLI, обновите его до последней версии.
Шаг 4. Создайте проект и загрузите символы
iOS+ (платформа Apple)
В диалоговом окне Build Settings (Настройки сборки) экспортируйте проект в рабочую область Xcode.
Создайте приложение.
Для платформ Apple плагин Firebase Unity Editor автоматически настраивает проект Xcode так, чтобы для каждой сборки создавался и загружался на серверы Firebase файл символов, совместимый с Crashlytics.
Android
В диалоговом окне Настройки сборки выполните одно из следующих действий:
Экспортировать в проект Android Studio, чтобы создать проект.
Создавайте APK-файлы прямо в редакторе Unity.
Перед сборкой убедитесь, что в диалоговом окне Настройки сборки установлен флажок Создать symbols.zip.
После завершения сборки создайте файл символов, совместимый с Crashlytics, и загрузите его на серверы Firebase, выполнив следующую команду интерфейса командной строки Firebase:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: идентификатор приложения Firebase для Android (не название пакета)
Пример идентификатора приложения Firebase для Android:1:567383003300:android:17104a2ced0c9b9bPATH/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
Как использовать команду CLI Firebase для создания и загрузки файла символов
Пометка Описание --generator=csymИспользует устаревший генератор файлов символов cSYM вместо генератора Breakpad по умолчанию.
Не рекомендуется использовать. Рекомендуем использовать генератор файлов символов Breakpad по умолчанию.
--generator=breakpadИспользует генератор файлов символов Breakpad
По умолчанию для создания файлов символов используется Breakpad. Используйте этот флаг, только если вы добавили
в конфигурацию сборки и хотите переопределить его, чтобы использовать Breakpad.symbolGenerator { csym() }--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.
В консоли Firebase перейдите на панель DevOps & Engagement > Crashlytics, чтобы проверить отчет о сбое при тестировании.
Если вы обновили консоль, но тестовое падение не появилось в течение пяти минут, включите ведение журнала отладки, чтобы проверить, отправляет ли ваше приложение отчеты о падениях.
Вот и все! Crashlytics теперь отслеживает сбои в вашем приложении. Чтобы посмотреть все отчеты и статистику, перейдите на Crashlytics панель управления.
Дальнейшие действия
(Рекомендуется) Если в приложении Android используется IL2CPP, вы можете собирать отчеты GWP-ASan, чтобы отлаживать сбои, вызванные ошибками нативной памяти. Эти ошибки памяти могут быть связаны с повреждением памяти в приложении, которое является основной причиной уязвимостей в системе безопасности. Чтобы использовать эту функцию отладки, убедитесь, что в вашем приложении используется последняя версия Crashlytics SDK для Unity (10.7.0 или более поздняя) и GWP-ASan включен явным образом (для этого необходимо изменить манифест приложения Android).
Настройте отчеты о сбоях, добавив отчеты с запросом согласия, журналы, ключи и отслеживание некритических ошибок.
Экспортируйте данные в BigQuery или Cloud Logging, чтобы использовать расширенные функции анализа, например отправлять запросы к данным, создавать собственные сводки и настраивать специальные оповещения.