Блог · 02.09.2026

Приложение падает у пользователей: как найти причину

«У меня вылетает» — сообщение, по которому невозможно ничего понять. Ни модели телефона, ни экрана, ни действия. А на устройствах разработчиков всё работает. Разберём, как превратить эти жалобы в конкретную строку кода.

Сначала — сбор отчётов

Пока в приложении нет сбора падений, разговор беспредметный. Подключается это за час: библиотека фиксирует момент вылета, стек вызовов, модель устройства, версию системы и версию приложения, и отправляет отчёт, когда появится сеть.

После подключения картина меняется: вместо «иногда вылетает» вы видите, что 80 процентов падений приходятся на одно место в коде и на Android 13, и чинится это одной правкой.

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

Что даёт сама площадка

Google Play показывает падения в консоли разработчика в разделе с показателями качества: сколько сессий закончилось вылетом, на каких устройствах, с какими стеками. App Store Connect отдаёт похожие данные в разделе с метриками. Это бесплатно и работает без дополнительных библиотек, но данных меньше и приходят они с задержкой.

Что чаще всего оказывается причиной

Обращение к тому, чего нет. Сервер вернул ответ без ожидаемого поля, приложение обратилось к нему напрямую — вылет. Особенно часто на редких сценариях: пустой список заказов, профиль без фотографии, товар без цены.

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

Разрешения. Пользователь отказал в доступе к камере или файлам, а код продолжает работать так, будто доступ есть.

Старые версии систем. Функция, доступная с определённой версии, вызывается без проверки. На новых телефонах работает, на старых — вылет.

Плохая связь. Запрос оборвался посередине, ответ пришёл наполовину. Проверяется включением режима слабой сети в инструментах разработчика.

Как воспроизвести

Имея стек вызовов, воспроизвести падение обычно несложно: видно экран и действие. Дальше берут устройство с той же версией системы — или эмулятор, если модель редкая, — и повторяют шаги. Если не воспроизводится, помогает ограничение памяти и медленная сеть: большинство «неуловимых» падений живут именно там.

Порядок действий

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

Такой цикл за две-три итерации обычно снижает долю сессий с падениями до долей процента. Это заметно и по отзывам: люди перестают писать «постоянно вылетает» и начинают писать по делу.

Как читать отчёт о падении

Отчёт выглядит пугающе, но полезной информации в нём немного. Первое — тип ошибки: обращение к пустому значению, выход за границы списка, нехватка памяти. Второе — стек вызовов: список функций, приведших к падению. Ищите в нём первые строки, относящиеся к вашему коду, а не к системным библиотекам: именно там причина.

Третье — контекст: модель устройства, версия системы, версия приложения, свободная память. Если все падения приходятся на одну версию Android или на устройства с малым объёмом памяти, причина сужается сразу.

Для приложений, собранных с сокращением кода, отчёт приходит нечитаемым набором символов. Чтобы он превращался в осмысленные названия, при каждой сборке нужно сохранять файл соответствия и загружать его в сервис сбора отчётов. Без этого отчёты бесполезны — частая причина, по которой команда «ничего не понимает» в собранной статистике.

Падения, которые не падения

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

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

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

Сколько падений — это нормально

Ориентир, к которому стоит стремиться: меньше одного процента сессий с падениями. Google Play считает приложение проблемным при превышении определённого порога и начинает понижать его в выдаче магазина, а на карточке появляется предупреждение для пользователей. То есть падения бьют не только по впечатлению, но и по установкам.

Достичь нуля невозможно: у части устройств экзотические прошивки, у части кончается память в момент запуска. Но разница между тремя процентами и половиной процента ощущается и в отзывах, и в возвратах пользователей.

Готовы обсудить?

Получите просчёт стоимости и сроков за 24 часа.

Подписываем NDA до получения детального ТЗ. Отправляем смету, презентацию команды и портфолио по теме вашего проекта.

+7 705 766 54 44 WhatsApp

Заявка

Звонок WhatsApp