Проверил бы различия в конфигурации: Проанализировал бы файлы build.gradle (module и app) и настройки ProGuard/R8 или других обфускаторов. Часто проблема кроется в исключении классов, полей или методов, которые используются в продакшене, но не в дебаге. Проверил бы различные buildTypes и productFlavors.
Использовал бы логи: Внедрил бы обширное логирование в проблемном месте кода и вокруг него, а также собирал бы логи с релизной сборки (через средства мониторинга, если есть, или попросил бы воспроизвести и предоставить логи).
Анализировал бы стектрейс: Внимательно изучил бы стектрейс ошибки релизной сборки. Сравнил бы его со стектрейсом дебажной сборки, если она тоже падала в аналогичном месте (или если удалось воспроизвести падение в дебаге). Уделял бы внимание номерам строк и именам классов/методов после обфускации (используя mappings.txt).
Попробовал бы воспроизвести проблему в максимально приближенном к релизу окружении:
buildType и productFlavor, что и релиз.Использовал бы инструменты мониторинга производительности и ошибок: Если интегрированы Crashlytics, Sentry или аналогичные, проанализировал бы отчеты об ошибках с продакшена. Они предоставляют информацию о типе устройства, версии ОС, версии приложения и самом стектрейсе.
Изучил бы изменения между успешной и падающей сборками: Определил бы, какие именно изменения в коде, библиотеках или конфигурации были внесены между последней работающей релизной сборкой и той, которая падает. Поэтапно откатывал бы изменения, чтобы найти виновника.
Двоичный поиск (Binary Search) изменений: Если изменений много, можно применять подход двоичного поиска: откатывать половину изменений и проверять. Если проблема исчезла, искать в откаченной половине; если нет, искать в оставшейся.
Временно отключил бы обфускацию/оптимизации: Для изоляции проблемы можно попробовать временно отключить ProGuard/R8 для проблемного buildType и проверить, воспроизводится ли ошибка. Если нет, проблема скорее всего в настройках обфускации.
Проверил бы затяжку зависимостей: Убедился бы, что версии зависимостей одинаковы для дебажной и релизной сборок, или что используемые версии совместимы.
Проверил бы различия в ресурсах/ассетах: Иногда проблемы могут возникать из-за различий в упакованных ресурсах или ассетах между сборками.
kotlin
java