Блог AppMetrica

От SDK до интерфейса: как мы переработали крэш-отчёты на всех уровнях

Когда приложение «падает», это не нравится никому. Экстренные завершения выводят из себя пользователей и треплют нервы разработчикам. Ошибки в коде ухудшают пользовательский опыт и, как следствие, влияют на конверсии. Поэтому без крэш-аналитики не обходится ни одна продуктовая команда. Новые отчёты AppMetrica помогут держать руку на пульсе приложения и ускорить решение возникающих проблем.


Что изменилось?

Отчёты покажут количество крэшей, отсортируют их по типам, «популярности» и предоставят детальную статистику по каждому падению. Отчасти так было и раньше, но полностью переработанный интерфейс оброс дополнительными фичами. Под капотом теперь новые механизмы доставки крэшей с устройств, автоматическая загрузка dSYM, mapping-файлов, и тут же — символизация.
Но обо всём по порядку…


Как вообще работает сбор крэшей?

Упрощённо, процесс делится на три этапа, на каждый из которых в AppMetrica приходится по компоненту:

1. Приложение «падает», AppMetrica SDK получает лог от операционной системы

Если приложение экстренно закрывается, операционная система формирует файл с информацией о падении, содержащий стек вызовов. AppMetrica SDK на устройстве пользователя получает его от ОС и отправляет на свой сервер.

Те, кто давно пользуется AppMetrica, помнят, что сбор крэшей — встроенная функция основной библиотеки. Но с ростом количества фич размер SDK увеличивается. Поэтому мы выделили сбор крэшей для iOS в отдельный компонент. Не забудьте подключить его.

2. Крэш-лог сохраняется на сервере, движок обрабатывает его

Бэкенд AppMetrica принимает крэши от SDK и автоматически декодирует стек вызовов. Это стало возможным благодаря интеграции с API операционных систем и автоматической загрузке dSYM и mapping-файлов.

Крэш-лог, в читаемом виде, сохраняется в базе данных.

Чтобы крэши автоматически декодировались, загрузите в AppMetrica mapping-файлы и dSYM, либо настройте их загрузку по API.

Все крэши группируются по типам и месту возникновения, после чего данные пересекаются с остальной информацией, собранной AppMetrica. Считаются все необходимые метрики: число затронутых устройств и сессий, % затронутой активной аудитории и другие.

3. Разработчик получает готовые отчёты в интерфейсе

AppMetrica показывает данные из базы в человеческом виде: группирует крэши, систематизирует информацию, строит полезные срезы и пересечения.


Как новые отчёты помогут бороться с крэшами?

Обновленный интерфейс позволяет ежедневно мониторить стабильность приложения. Исследовать проблемы можно на трёх уровнях:

Верхний уровень — дашборд здоровья приложения

Появившиеся дашборды с метриками crash-free, долей затронутых пользователей и другими показателями помогут контролировать SLA и оценивать приоритетность крэшей в очереди.

Уже знакомые цифры никуда не делись. Среди них — общее количество крэшей и число затронутых устройств.

Таблицу под графиком тоже обновили, добавив следующие колонки:

  • Обнаружен в версии — теперь мы записываем, в какой версии приложения крэш появился впервые. Это помогает понять причину крэша. Если в очередной сборке появилась новая фича, и вместе с ней приложение стало падать — вероятно, фичу внедрили с ошибками.
  • Последнее воспроизведение — поясняет, удалось ли исправить крэш. Если в последних сборках приложения его нет — это хорошая новость!

Воспроизводимость крэша зависит от множества факторов. Поэтому, как и раньше, крэши можно сегментировать и группировать: по версии приложения, ОС и другим фильтрам, — аналогично отчёту Аудитория. Прямо как в таск-трекерах, крэши можно закрывать, если они исправлены. При воспроизведении в новой версии приложения крэш автоматически переоткроется.

Как и прежде, крэши можно комментировать. Эта небольшая опция облегчает жизнь разработчикам и продуктовой команде. В ближайших релизах мы добавим интеграцию с таск-трекерами, чтобы тикеты с правками создавались автоматически.

Гранулярная статистика по каждому крэшу

Из отчёта можно перейти к конкретной проблеме и изучить подробности. Карточка крэша — тоже дашборд, с самыми важными данными на видном месте:

Здесь пригодятся новые метрики:

— Background: даже если крэш массово воспроизводится, на некоторые вещи можно сделать поправку. Может быть, пользователи ничего не заметили, если приложение падает в фоне.

— А может, оно падает только у пауэр-юзеров, которые слишком сильно модифицировали систему с помощью jailbreak или прав суперпользователя — такие устройства помечаются тегом Rooted.

Мы не говорим, что эти случаи недостойны правок кода, но иногда они снижают приоритет :)


Крэш изнутри

Из карточки крэша доступен просмотр стека вызовов. Именно эта информация наиболее полезна разработчикам и даёт шанс исправить крэш:

Если лога недостаточно, на помощь приходят профили пользователей. Из них мы знаем, какие действия совершил «пострадавший», перед тем как приложение упало. Эта информация бесценна для QA-инженеров, если ошибку не удаётся воспроизвести. Чтобы изучить список недавних событий, нажмите Посмотреть события сессии на странице стека вызовов.


Все отчёты по крэшам уже доступны для полноценного использования. В ближайших релизах обновится отчёт по ошибкам и появится ещё пара фич, о которых мы расскажем отдельно.


Как перейти на новый отчёт?

Первым делом — интегрируйте последнюю версию AppMetrica SDK. Не забудьте подключить компонент для сбора крэшей — он теперь поставляется отдельно.

Чтобы привести стек вызовов в читаемую форму, AppMetrica нужны dSYM для iOS и mapping-файлы для Android. Их можно загрузить вручную, либо настроить автоматическую загрузку с помощью Post API key. Все функции, связанные с расшифровкой крэшей, расположились в настройках приложения. Там же можно посмотреть, для каких версий приложения маппинги отсутствуют.

Но AppMetrica в любом случае оповестит вас о недостающих файлах расшифровки:


Мы переработали отчёт на всех уровнях и этапах, упростив солидную часть рутины: крэши теперь декодируются автоматически, а интерфейс позволяет разработчикам и QA-инженерам в пару кликов получить гораздо больше полезной информации. Надеемся, такие масштабные изменения будут исключительно полезны :)

Как обычно, всегда рады фидбеку. Пишите в чат — если хотите поделиться опытом, или в форму для голосований — если считаете, что мы забыли добавить что-то важное.

---
Здоровье приложения — в ваших руках!

Команда AppMetrica