Значок жука в верхней панели открывает диагностику. Обновление читает ограниченный фрагмент лога; подготовка письма создаёт отдельный ZIP и передаёт его через FileProvider с временным доступом только на чтение. Предпочтение отдаётся почтовым приложениям, запасной вариант — системное меню отправки. Message487 самостоятельно не отправляет письмо. Очистка удаляет логи, последний креш и кеш архивов, но не очередь сообщений.
В приватном каталоге files/logs хранятся три файла по 256 КиБ и crash-latest.log
размером до 256 КиБ. Запись выполняется одним фоновым потоком через очередь на 256
записей; ротация и экспорт используют общую блокировку. При переполнении новые записи
пропускаются; их количество фиксируется при следующей успешной записи. Ошибки ввода-вывода
не приводят к крешу и отображаются на экране диагностики. Предпросмотр содержит последние
48 КиБ и последний креш. В cache/feedback остаётся не более трёх ZIP с уникальными именами.
Обработчик необработанных исключений синхронно записывает креш с fsync, сохраняет
признак для диалога следующего запуска и передаёт управление прежнему обработчику Android.
Отдельный файл креша сохраняется при обычной ротации. Обрабатываются необработанные
Java/Kotlin-исключения, но не ANR, нативные креши, принудительная остановка или завершение
без исключения. Нехватка места и тяжёлые сбои процесса могут помешать записи.
Тексты исключений и имена потоков исключены; глубина причин, подавленные исключения и
число кадров ограничены. Имена символов приложения и строки исходников сохраняются в release.
Логи используют фиксированный набор событий и типизированные либо разрешённые значения метаданных. Не добавляйте тела сообщений, отправителей, пакеты, URL, ID событий/установок, коды устройств или произвольные тексты исключений. В архив входят версии приложения, Android, сведения об устройстве, архитектура и флаги настроек без секретов.
Команда bundle exec fastlane android checks проверяет ротацию и перезапуск, сохранение
креша, исключение секретов, ошибки хранилища, передачу управления прежнему обработчику,
хранение архивов и разрешения вложения. Для ручной проверки на debug-эмуляторе запустите
приложение, выполните adb shell am crash life.andre.message487 и откройте его снова.
Проверьте диалог и ZIP. Остановитесь на редакторе письма, если не собираетесь отправлять отчёт.