Сборка собственной прошивки Android начинается не с кнопки «Compile», а с проверки трёх вещей: есть ли для вашего устройства открытые исходники ядра и device tree, разблокируется ли загрузчик, и хватит ли ресурсов компьютера — для компиляции AOSP требуется минимум 16 ГБ оперативной памяти (комфортно — 32 ГБ) и порядка 250–400 ГБ свободного места на диске.
Самостоятельная сборка прошивки — задача вполне реальная для энтузиаста с базовыми навыками работы в Linux. Ниже разберём весь путь: от подготовки системы до прошивки готового образа на смартфон. Материал ориентирован на сборку из исходного кода AOSP (Android Open Source Project) и кастомных ROM на его основе, таких как LineageOS.
Что нужно понять перед началом сборки
Прошивка Android — это не один файл, а набор образов: boot (ядро и ramdisk), system (сама ОС), vendor (драйверы производителя), а также разделы восстановления и радиомодуля. При сборке из AOSP вы компилируете системную часть, а проприетарные компоненты (vendor blobs) извлекаются из устройства или берутся из готовых репозиториев.
Ключевое ограничение: собрать рабочую прошивку можно только для устройства, под которое существуют device tree, исходники ядра и vendor-файлы. Для популярных моделей (Pixel, многие Xiaomi, OnePlus) они доступны на GitHub. Для малоизвестных китайских смартфонов чаще всего исходников нет, и полноценная сборка невозможна — остаётся только модификация готовой прошивки.
Требования к компьютеру и выбор ОС
Сборка AOSP официально поддерживается на Ubuntu LTS (и совместимых дистрибутивах Linux). Сборка на Windows напрямую невозможна — потребуется виртуальная машина, WSL2 (с ограничениями) или отдельный Linux-раздел. macOS ранее поддерживался, но с каждой версией Android совместимость ухудшается, поэтому Linux остаётся надёжным выбором.
- 🖥️ Процессор: от 8 потоков, желательно современный многоядерный CPU — от этого напрямую зависит время сборки.
- 🧠 ОЗУ: минимум 16 ГБ, рекомендуется 32 ГБ; при нехватке памяти компиляция падает с ошибками.
- 💾 Диск: SSD от 400 ГБ свободного места; на HDD сборка затянется в разы.
- 🌐 Интернет: исходники AOSP занимают свыше 100 ГБ, нужен стабильный канал без лимитов.
Точные требования зависят от версии Android: новые ветки (Android 13, 14 и выше) требовательнее к памяти и диску, чем старые. Актуальные системные требования публикуются в официальной документации AOSP — сверьтесь с ней перед установкой.
Установка инструментов и загрузка исходников
На свежей Ubuntu сначала ставятся зависимости: компиляторы, Git, Python, библиотеки разработки и утилита repo — менеджер репозиториев от Google, который управляет сотнями git-репозиториев AOSP как единым проектом.
sudo apt update && sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip openjdk-11-jdk python3
Затем устанавливается repo и инициализируется рабочая директория с нужной веткой Android:
mkdir ~/aosp && cd ~/aosp
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r1
repo sync -c -j$(nproc --all)
Синхронизация займёт от пары часов до целой ночи в зависимости от скорости соединения. Тег ветки (например, android-14.0.0_r1) выбирайте из официального списка релизов AOSP — он должен соответствовать желаемой версии системы.
⚠️ Внимание: прерывание repo sync по обрыву сети — нормальная ситуация. Просто повторите команду: синхронизация продолжится с места обрыва. Не удаляйте каталог и не начинайте заново.
Подготовка device tree, ядра и vendor blobs
Это самый ответственный этап. Вам нужно найти и добавить в дерево исходников три компонента под ваше устройство: device tree (конфигурация устройства), исходники ядра и vendor blobs (проприетарные библиотеки производителя). Для Google Pixel бинарные драйверы публикуются на официальном сайте для разработчиков, для других брендов — ищите репозитории с пометкой вашей модели на GitHub, проектах LineageOS или TheMuppets.
Структура размещения в дереве исходников выглядит так: device tree кладётся в device/производитель/кодовое_имя/, ядро — в kernel/производитель/кодовое_имя/, vendor — в vendor/производитель/кодовое_имя/. Кодовое имя устройства (например, sunfish для Pixel 4a) уточняйте в спецификации модели — оно должно точно совпадать с названием в репозитории.
☑️ Готовность к компиляции
Если vendor blobs недоступны в готовом виде, их можно извлечь из работающего устройства скриптом extract-files.sh, который обычно входит в состав device tree. Для этого смартфон должен быть подключён по ADB с включённой отладкой.
Компиляция прошивки
Когда все компоненты на месте, запускается окружение сборки и выбирается целевое устройство:
source build/envsetup.sh
lunch aosp_кодовое_имя-userdebug
m -j$(nproc)
Команда lunch настраивает переменные окружения под конкретную модель, а m запускает компиляцию. Тип сборки userdebug подходит для тестирования: он даёт root-доступ через ADB и расширенное логирование. Для финального варианта используется user, но отладка в нём затруднена.
Первая сборка на среднем ПК занимает от 3 до 8 часов, повторные (инкрементальные) — значительно быстрее, так как пересобираются только изменённые модули. Ускорить процесс помогает кэш компилятора ccache: он активируется переменной окружения export USE_CCACHE=1.
⚠️ Внимание: если сборка падает с ошибкой нехватки памяти (убийство процессов компилятора), уменьшите число параллельных задач — например, m -j4 вместо максимума — или добавьте swap-файл. Ошибки вида «ninja: build stopped» требуют прокрутки лога выше: первопричина всегда в первой ошибке, а не в последней строке.
Типичные ошибки при первой сборке
Чаще всего встречаются: отсутствующие зависимости (решается доустановкой пакетов из документации AOSP), несовпадение ветки device tree с версией AOSP (ветки должны соответствовать друг другу), нехватка ОЗУ (уменьшите -j или добавьте swap) и битые vendor blobs (переизвлеките их с устройства). Читайте лог снизу вверх до первого слова error — это и есть реальная причина.
Прошивка собранных образов на устройство
Результат компиляции лежит в каталоге out/target/product/кодовое_имя/ — там появятся файлы boot.img, system.img, vendor.img и другие. Перед прошивкой необходимо разблокировать загрузчик смартфона. Процедура разблокировки зависит от производителя: у Pixel это команда fastboot, у Xiaomi — официальная утилита и ожидание разрешения, у ряда брендов разблокировка вообще закрыта. Учтите, что разблокировка стирает все данные и может аннулировать гарантию.
Сама прошивка выполняется через fastboot из режима bootloader:
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash vendor vendor.img
fastboot -w reboot
На современных устройствах с разметкой A/B и динамическими разделами порядок прошивки отличается — часто используется fastboot update с zip-пакетом образов или прошивка через fastbootd. Точную последовательность для вашей модели сверяйте с документацией device tree или инструкцией производителя.
⚠️ Внимание: прошивка несовместимых образов может привести к состоянию «кирпича», когда устройство не загружается. Перед экспериментами убедитесь, что у вас есть способ восстановления: стоковый образ для отката и доступ к режиму fastboot или аварийной загрузки (EDL на Qualcomm — только при наличии подходящего загрузчика).
Сборка кастомных ROM как альтернатива чистому AOSP
Если цель — получить прошивку с дополнительными функциями, удобнее собирать не чистый AOSP, а готовую базу вроде LineageOS. Процесс аналогичен, но инициализируется манифест проекта (repo init с URL LineageOS), а device tree подключается автоматически через скрипт breakfast кодовое_имя — для официально поддерживаемых устройств всё подтянется само.
Сравним основные подходы к получению собственной прошивки:
| Подход | Сложность | Что получаете | Для кого |
|---|---|---|---|
| Сборка AOSP | Высокая | Чистая система без сервисов Google | Разработчики, энтузиасты |
| Сборка LineageOS | Средняя | Полноценный ROM с расширенными настройками | Продвинутые пользователи |
| Модификация стоковой прошивки | Средняя | Родная прошивка с правками (root, удаление лишнего) | Владельцы устройств без исходников |
| Готовая кастомная прошивка | Низкая | Собранный кем-то ROM, только установка | Новички |
Модификация стоковой прошивки — отдельный путь: распаковка образа system.img, правка содержимого и пересборка. Это проще полной компиляции и не требует исходников, но возможности ограничены: менять можно только пользовательскую часть, а не ядро и низкоуровневые компоненты.
Часто задаваемые вопросы
Можно ли собрать прошивку Android на Windows?
Напрямую — нет, сборка AOSP поддерживается только в Linux. На Windows используют виртуальную машину с Ubuntu (с выделением достаточного объёма ОЗУ и диска) или WSL2, хотя последний вариант официально не рекомендован и может давать ошибки на этапе синхронизации и компиляции.
Сколько времени занимает сборка прошивки?
Первая полная сборка на компьютере средней мощности занимает от 3 до 8 часов, плюс несколько часов на скачивание исходников. Повторные сборки после небольших правок проходят заметно быстрее, особенно с включённым ccache.
Нужен ли root для сборки собственной прошивки?
Для самой сборки root не нужен — компиляция происходит на компьютере. Root на устройстве потребуется только для извлечения vendor blobs через ADB, если вы не нашли их в готовом виде. Прошивка же выполняется через fastboot с разблокированным загрузчиком.
Что делать, если для моего смартфона нет исходников?
Полная сборка невозможна. Проверьте наличие готовых кастомных прошивок под вашу модель на профильных форумах (например, ветки устройства на XDA или 4PDA). Альтернатива — модификация стокового образа: распаковка, правка и пересборка без компиляции из исходного кода.
Аннулирует ли самосборная прошивка гарантию?
Разблокировка загрузчика и установка неофициального ПО в большинстве случаев служат основанием для отказа в гарантийном обслуживании, а у некоторых брендов необратимо срабатывает счётчик вмешательства. Перед началом оцените риски и сохраните стоковые образы для возможного отката.