Перейти к содержимому

Процесс сборки 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