Процесс сборки Android за 10 минут | От исходного кода до подписанного APK
Rahul Ray
0:00 / 0:00
Процесс сборки Android за 10 минут | От исходного кода до подписанного APK
520 просмотров · 5 мес. назад
Rahul Ray
825 подписчиков
520 просмотров · 5 мес. назад
Большинство разработчиков Android ежедневно нажимают кнопку «Запустить». Однако очень немногие знают, что происходит на самом деле.
Ваш код на Kotlin не превращается напрямую в APK. Между этими этапами существует целый конвейер — компиляция ресурсов, генерация байт-кода, преобразование в DEX, упаковка APK, выравнивание, подписание и оптимизация.
И как только вы поймете этот конвейер, ошибки сборки Android внезапно станут гораздо понятнее.
В этом видео подробно разбирается весь процесс сборки Android менее чем за 10 минут — от исходного кода до подписанного APK, готового к установке на устройство.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🗂️ ЧТО ВЫ УЗНАЕТЕ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Почему компиляция ресурсов происходит до Компиляция Kotlin
✅ Как AAPT2 генерирует R.java и resources.arsc
✅ Что на самом деле находится внутри android.jar
✅ Как код Kotlin становится байт-кодом JVM
✅ Почему Android использует DEX вместо файлов классов JVM
✅ Реальная причина ограничения в 64 КБ методов
✅ Как на самом деле работает MultiDex
✅ Упаковка APK и почему APK — это, по сути, ZIP-файлы
✅ Что делает zipalign внутри и почему выравнивание имеет значение
✅ Схемы подписи APK — V1, V2, V3 и V4
✅ Как плагин Android Gradle управляет всем конвейером
✅ Инкрементальные сборки и кэширование задач
✅ Что на самом деле делает R8 в релизной версии сборки
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 ГЛАВЫ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
00:00 Введение в сборку Android Процесс
00:27 3 причины, по которым важно понимать внутреннюю структуру сборки
01:18 Обзор 6-этапного конвейера сборки
01:51 Этап 1: Компиляция ресурсов (AAPT2)
02:59 Как работают R.java и идентификаторы ресурсов
03:32 Этап 2: Kotlin в байт-код JVM (.class)
04:48 Этап 3: Преобразование DEX (Почему Android не использует JVM)
05:58 Ограничение на 64K методов и MultiDex
06:40 Этапы 4 и 5: Упаковка APK и ZipAlign
07:22 Этап 6: Схемы подписи APK (V1–V4)
08:31 Как плагин Android Gradle (AGP) автоматизирует этот процесс
09:06 Релизные сборки: уменьшение размера и обфускация с R8
10:00 Полный обзор конвейера
10:55 Завершение
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏗️ СТРОИТЕЛЬНЫЙ КОНВЕЙЕР РАССМОТРЕН
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 AAPT2 → Компилирует и связывает ресурсы Android. Генерирует R.java и resources.arsc
📦 Компилятор Kotlin → Преобразует исходный код Kotlin в байт-код JVM .class
📦 D8 / R8 → Преобразует байт-код JVM в формат DEX, оптимизированный для среды выполнения Android
📦 zipalign → Выравнивает содержимое APK для эффективного доступа к памяти mmap()
📦 apksigner → Криптографически подписывает APK для установки и обновлений
📦 Плагин Android Gradle → Организует весь граф сборки с инкрементальной реализацией исполнение
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚡ КЛЮЧЕВЫЕ ПОНЯТИЯ ОБЪЯСНЕНЫ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▶️ Почему Android не может напрямую Запуск байт-кода JVM
▶️ Пулы общих констант в DEX и почему они важны для устройств с малым объемом памяти
▶️ Почему вообще существует ограничение на 64 КБ методов
▶️ Как на самом деле работают внутренние инкрементальные сборки Gradle
▶️ Почему подписание происходит после выравнивания
▶️ Чем отличаются релизные сборки от отладочных
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👋 СВЯЗАТЬСЯ С Я
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🌐 Веб-сайт: https://rahulray.dev
💼 LinkedIn: / raystatic
🐦 Twitter/X: https://x.com/raystatic_
📸 Instagram: / rayiscoding
💬 Оставьте комментарий: Какой внутренний механизм Android мне следует разобрать следующим?
ART Runtime
APK против AAB
Кэш конфигурации Gradle
Запуск Android-приложения
IPC Binder