Этот вопрос проверяет понимание полного цикла запуска приложения: от сборки Gradle и упаковки APK до установки и старта процесса на устройстве.
Android Studio запускает Gradle-сборку, генерирует ресурсы, компилирует код и формирует APK или AAB. После этого пакет отправляется на устройство через ADB и устанавливается. Затем система создаёт процесс приложения и запускает стартовую Activity. Каждый из этих этапов выполняется автоматически и последовательно.
Процесс запуска приложения после нажатия Run состоит из нескольких взаимосвязанных шагов, каждый из которых важен для корректного развертывания приложения на устройстве.
Перед запуском Android Studio инициирует Gradle:
Конфигурируются модули, плагины и зависимости.
Обрабатываются ресурсы с помощью aapt2, создаётся класс R.
Компилируется Kotlin/Java-код в .class файлы.
Выполняется преобразование в .dex файлы.
R8 уменьшает и оптимизирует код, обфусцирует имена.
Формируется APK или AAB, который подписывается debug-ключом.
Пример:
println(BuildConfig.DEBUG)
(генерируется на этапе сборки)
После сборки Android Studio начинает доставку файла на устройство:
Для APK выполняется команда вида adb install -r app-debug.apk.
Для AAB создаются split APK через bundletool и устанавливаются набором.
Studio использует инкрементальную установку, передавая только изменённые части.
Это позволяет максимально ускорить цикл разработки.
Когда приложение установлено:
Android Runtime создаёт новый процесс приложения через механизм fork от Zygote.
Процесс запускает ActivityThread — центральную точку входа приложения.
Система вызывает стартовую Activity и её методы жизненного цикла (onCreate(), onStart(), onResume()).
После этого интерфейс становится видимым на экране устройства.
Последовательность Run выглядит так: сборка → оптимизация → упаковка → установка → запуск. Понимание этой цепочки важно для оптимизации времени разработки и поиска ошибок сборки и установки.