| Выберите платформу: | iOS+ Android Flutter Unity |
Нажмите на проблему, чтобы получить подробный отчет о событии на панели управления DevOps & Engagement > Crashlytics в консоли Firebase. Вы можете настроить эти отчеты, чтобы лучше понимать, что происходит в вашем приложении, и обстоятельства, связанные с событиями, которые передаются в Crashlytics.
Отправлять в Crashlytics отчеты о перехваченных исключениях и неперехваченных исключениях.
Включите отчеты GWP-ASan, чтобы отлаживать проблемы с повреждением памяти.
Добавьте в приложение код, который будет регистрировать специальные ключи, специальные сообщения журнала и идентификаторы пользователей.
Автоматически получать журналы хлебных крошек, если в приложении используется Firebase SDK для Google Analytics. Эти журналы позволяют отслеживать действия пользователей, которые привели к событию, собранному Crashlytics в вашем приложении.
Отключите автоматическую отправку отчетов о сбоях и включите отправку отчетов по запросу для пользователей. Обратите внимание, что по умолчанию Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения.
Как сообщить об исключении
Сообщать о перехваченных исключениях
Если вы ожидаете исключения, вы можете настроить Crashlytics SDK так, чтобы он сообщал о них как о некритических событиях. Эти события регистрируются на устройстве и отправляются вместе со следующим отчетом о критическом событии или когда конечный пользователь перезапускает игру.
Чтобы зарегистрировать исключение в C#, используйте следующий метод:
Crashlytics.LogException(Exception ex);
Ожидаемые исключения можно регистрировать в блоках try/catch:
try { myMethodThatThrows(); } catch (Exception e) { Crashlytics.LogException(e); // handle your exception here! }
Сообщать о необработанных исключениях
Для неперехваченных исключений, которые не приводят к сбою в игре (например, неперехваченных исключений C# в логике игры), можно настроить отправку отчетов о них в Crashlytics SDK как о критических событиях. Для этого задайте для свойства Crashlytics.ReportUncaughtExceptionsAsFatal значение true при инициализации Crashlytics в проекте Unity.
Эти события передаются в Crashlytics в реальном времени, и пользователю не нужно перезапускать игру.
Если незахваченные исключения регистрируются как критические события, они учитываются в статистике пользователей без сбоев и в оповещениях о скорости.
Обратите внимание, что сбои в работе нативных приложений всегда регистрируются как критические события. Эти события регистрируются на устройстве, а затем отправляются, когда конечный пользователь перезапускает игру.
void Start() { // Since there is no try-block surrounding this call, if an exception is thrown, // it is considered unexpected. // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true` // will ensure that such cases are reported as fatals. thirdPartyMethodThatMayThrow(); }
Включить отчеты GWP-ASan для отладки проблем с повреждением памяти
Для приложений Android, в которых используется IL2CPP, Crashlytics может помочь отлаживать сбои, вызванные ошибками нативной памяти, собирая отчеты GWP-ASan. Эти ошибки, связанные с памятью, могут быть вызваны повреждением памяти в приложении, которое является основной причиной уязвимостей в системе безопасности.
На панели DevOps & Engagement (DevOps и вовлеченность) > Crashlytics консоли Firebase вы можете выполнять с этими данными следующие действия:
Эти данные можно посмотреть на новой вкладке "Трассировки стека памяти", нажав на проблему.
Вы можете использовать новый сигнал "Отчет GWP-ASan" и фильтр, чтобы быстро просматривать все проблемы с этими данными.
Отчеты GWP-ASan о памяти можно получать, если в приложении используется последняя версия Crashlytics SDK для Unity (10.7.0 или более поздняя) и GWP-ASan включен (для этого нужно изменить манифест приложения для Android). Если в вашем приложении есть код на C++, вы можете протестировать настройку GWP-ASan, используя пример нативного кода в документации Android.
Как добавить специальные ключи
Специальные ключи помогают получить информацию о состоянии приложения непосредственно перед сбоем. Вы можете связать с отчетами о сбоях произвольные пары "ключ-значение", а затем использовать специальные ключи для поиска и фильтрации отчетов на панели DevOps & Engagement > Crashlytics в консоли Firebase.
Вы можете искать проблемы, соответствующие определенному ключу.
При просмотре определенной проблемы в консоли можно посмотреть связанные с каждым событием специальные ключи (вкладка Ключи) и даже отфильтровать события по специальным ключам (меню Фильтр вверху страницы).
Если функция вызывается несколько раз, новые значения для существующих ключей обновляют значение, и при регистрации сбоя сохраняется только самое последнее значение.
Crashlytics.SetCustomKey(string key, string value);
Как добавить собственные сообщения журнала
Чтобы получить больше информации о событиях, которые привели к сбою, добавьте в приложение собственные журналы Crashlytics. Crashlytics связывает журналы с данными о сбоях и показывает их на вкладке Журналы, когда вы просматриваете сведения о проблеме (все проблемы можно найти на панели управления Crashlytics в разделе DevOps и вовлечение консоли Firebase).
Crashlytics.Log(string message);
Как задать идентификаторы пользователей
Вы можете использовать идентификатор, токен или хешированное значение, чтобы однозначно идентифицировать конечного пользователя приложения, не раскрывая и не передавая его личную информацию. Вы также можете удалить значение, задав пустую строку. Это значение можно найти в разделе DevOps & Engagement (DevOps и взаимодействие) > Crashlytics dashboard (панель управления) консоли Firebase.
Crashlytics.SetUserId(string identifier);
Как получить журналы навигации
Журналы навигации позволяют лучше понять, как пользователь взаимодействовал с приложением до сбоя, некритической ошибки или события ANR. Эти журналы могут быть полезны при попытке воспроизвести и отладить проблему.
Журналы цепочки навигации создаются на основе данных Google Аналитики, поэтому, чтобы их получать, вам нужно включить Google Аналитику для проекта Firebase и добавить в приложение Firebase SDK для Google Analytics. После этого журналы цепочки навигации будут автоматически включаться в данные о событиях на вкладке Журналы при просмотре сведений о проблеме (все проблемы можно найти на панели DevOps и вовлеченность > Crashlytics в консоли Firebase).
Analytics SDK автоматически регистрирует событие screen_view, благодаря чему в журналах цепочки событий показывается список экранов, просмотренных до сбоя, некритической ошибки или события ANR. В журнале навигации screen_view есть параметр firebase_screen_class.
В журналы также добавляются специальные события, которые вы вручную регистрируете в течение сеанса пользователя, включая данные параметров событий. Эти данные позволяют отследить последовательность действий пользователя, которые привели к сбою, некритической ошибке или ошибке ANR.
Обратите внимание, что вы можете управлять сбором и использованием данных Google Analytics, в том числе данных, которые заполняют журналы цепочки навигации.
Как включить отчеты о согласии
По умолчанию Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения. Вы можете предоставить пользователям больше контроля над отправляемыми данными, разрешив им включать и отключать отправку отчетов о сбоях.
Чтобы отключить автоматический сбор данных только для определенных пользователей, во время выполнения вызовите переопределение сбора данных Crashlytics. Переопределенное значение сохраняется при всех последующих запусках приложения, поэтому Crashlytics может автоматически собирать отчеты для этого пользователя.
Crashlytics.IsCrashlyticsCollectionEnabled = true
Если пользователь позже откажется от сбора данных, вы можете передать значение false в качестве переопределения. Оно будет применено при следующем запуске приложения и сохранится при всех последующих запусках.
Как управлять данными о сбоях
С помощью Crash Insights вы можете устранять проблемы, сравнивая анонимизированные трассировки стека с трассировками из других приложений Firebase и узнавая, является ли ваша проблема частью более масштабной тенденции. Для многих проблем Crash Insights даже предоставляет ресурсы, которые помогут вам отладить сбой.
Инструмент "Аналитика сбоев" использует агрегированные данные о сбоях, чтобы выявлять общие тенденции стабильности. Если вы не хотите делиться данными приложения, вы можете отключить функцию "Анализ сбоев" в меню Анализ сбоев вверху списка проблем на панели DevOps и вовлеченность > Crashlytics в консоли Firebase.
Дальнейшие действия
- Экспортируйте данные в BigQuery или Cloud Logging, чтобы использовать расширенные функции анализа, например отправлять запросы к данным, создавать собственные сводки и настраивать специальные оповещения.