Пошаговая сборка AOSP: от загрузки исходников до готового образа
Короткий ответ: скачайте официальные манифесты AOSP и используйте утилиту repo (repo init -b <ветка>; repo sync), подготовьте Linux‑окружение (правильный JDK, зависимости, достаточно диска и RAM), выполните source build/envsetup.sh → lunch
Где взять исходники и манифесты
- Официальный источник AOSP — манифесты и репозитории Google (используйте официальные манифесты для нужной версии Android).
- Сообщества (LineageOS, другие форки) полезны как примеры device/vendor и патчей, но для базовой сборки опирайтесь на официальные ветки.
- Локальные/региональные зеркала и зеркала на git‑хостингах ускоряют загрузку при медленной сети, но проверьте соответствие веток.
Подготовка окружения
- ОС: 64‑битный Linux (Ubuntu LTS/ Debian — версии указаны в документации под релиз).
- Диск: 250–400+ ГБ свободного места для исходников, out и кеша.
- Память/CPU: 16–32+ ГБ RAM и многопоточный CPU.
- Установить пакеты: git, python3, openjdk (версия согласно релизу), make, clang/gcc, ccache, инструменты для 32‑битных библиотек при необходимости.
- Настройте JAVA_HOME и PATH; убедитесь, что git настроен (user.name, user.email).
- Рекомендации: включите ccache, выделите отдельный диск/раздел под исходники.
Проверьте в документации релиза точную версию JDK и список пакетов — несоответствие JDK одна из частых причин сбоев.
Установка repo, инициализация и синхронизация
- Установите скрипт repo в ~/bin и сделайте исполняемым.
- Создайте пустую папку, например ~/android/aosp.
- Инициализация: repo init -u <URL_манифеста> -b <ветка_релиза>
- Выберите ветку: стабильная релизная метка (например android-14.0.0_rX) предпочтительнее master для первой сборки.
- Синхронизация: repo sync -j
- Первый sync может занять часы и сотни гигабайт. Используйте параллелизм (-j), но не перегружайте соединение.
- При обрывах запуск repo sync повторит загрузку недостающих репозиториев.
Структура исходников и выбор конфигурации сборки
- Основные каталоги: build/, frameworks/, system/, packages/, hardware/, device/, kernel/, vendor/.
- Подготовка сборки:
- source build/envsetup.sh
- lunch
(формат: aosp_ -userdebug, generic_x86_* для эмулятора) - Варианты: eng (макс. debug), userdebug (удобно для разработки), user (релиз).
- Команды сборки:
- m или make (используйте m otapackage для создания OTA-архива)
- Для ускорения: make -j
, но следите за RAM/температурой.
Device, vendor и kernel — как подготовить для реального устройства
- Device tree: device/
/ содержит конфигурацию продукта (BoardConfig.mk, device.mk, AndroidProducts.mk). - Vendor blobs: извлекаются с устройства (adb pull + скрипты extract-files.sh) или берутся из официальных пакетов производителя. Без них аппаратные компоненты (модем, камера, GPU) могут не работать.
- Kernel: исходники ядра обычно публикуются производителем; ядро собирается отдельно и подключается в boot.img или используется prebuilt.
- Советы: ищите готовые device/vendor в сообществах для вашей модели — это ускорит портирование.
Не пытайтесь сразу собирать девелоперскую ветку для незнакомого устройства — начните со стабильного релиза и эмулятора.
Как тестировать и прошивать
- Эмулятор: используйте generic образы, полученные после сборки, через встроенный emulator — безопасно для проверки UI и фреймворка.
- Реальное устройство:
- Разблокируйте загрузчик.
- Fastboot: flash boot/ system/ vendor/ и другие образы (список зависит от устройства).
- Альтернатива: otapackage → adb sideload в recovery.
- Всегда проверяйте совместимость версий загрузчика/разметки разделов и наличие соответствующего vendor/kernel.
Частые ошибки
- Неверная версия JDK → ошибка компиляции Java/Jack/Soong.
- Недостающие зависимости (32‑битные библиотеки, ncurses, zlib).
- Мало места на диске — сборка оборвётся без понятного лога.
- repo sync обрывается из‑за сети — перезапустите, используйте зеркало.
- Несовместимость device/vendor — устройство не загрузится (bootloop).
FAQ
- С: Сколько времени займёт сборка?
О: На мощной машине (многоядерная, 32+ ГБ RAM) чистая сборка может занять от 1–6 часов; на слабом железе — значительно дольше. - С: Могу ли я собрать AOSP без vendor blobs?
О: Да, для эмулятора и многих функций — можно; но реальное устройство может потерять драйверы (модем, камера). - С: Как ускорить повторные сборки?
О: Используйте ccache, инкрементальную сборку (m), многопоточность и избегайте полной очистки out/. - С: Где взять device tree для моего телефона?
О: Поискать в репозиториях сообществ (форки, GitHub/GitLab) — часто готовые device/vendor есть для популярных моделей.
AOSP — большой проект, но пошаговый подход: подготовить окружение, корректно инициализировать манифест, синхронизировать исходники, настроить device/vendor/kernel и собрать образ — позволит получить рабочую прошивку или эмуляторный образ для тестирования и разработки.