Сборка собственной прошивки Android начинается не с кнопки «Build», а с проверки, открыт ли исходный код для вашего устройства: без опубликованного производителем дерева устройства (device tree), вендорных бинарных файлов и исходников ядра собрать рабочий образ не получится, сколько бы мощным ни был компьютер. Именно отсутствие этих компонентов — главная причина, по которой 90% попыток собрать кастомную прошивку заканчиваются ошибкой ещё до начала компиляции.
В этой статье разберём полный цикл: от подготовки сборочной машины на Linux до загрузки исходников AOSP через repo, настройки окружения, компиляции и установки результата на смартфон. Материал ориентирован на тех, кто уже знаком с командной строкой Linux и понимает базовые принципы работы Android.
Что нужно понять перед началом сборки
Android — это открытая система, и её базовый код публикуется в проекте AOSP (Android Open Source Project). Однако «чистый» AOSP сам по себе не загрузится на конкретном смартфоне: ему нужны драйверы и конфигурация под конкретное железо. Поэтому сборка прошивки — это всегда комбинация трёх слоёв: исходники системы, дерево устройства и проприетарные бинарные компоненты вендора.
Отсюда следует главный практический вывод: проще всего собирать прошивку для устройств с хорошей поддержкой сообщества — например, для моделей Google Pixel, для которых Google публикует фабричные образы, бинарные драйверы и исходники ядра. Для аппаратов с закрытым загрузчиком и без опубликованных исходников ядра самостоятельная сборка либо невозможна, либо потребует обратного инжиниринга.
Требования к компьютеру и программному окружению
Компиляция Android — ресурсоёмкая задача. Исходный код занимает десятки гигабайт, а в процессе сборки объём данных вырастает ещё сильнее. Слабая машина не просто замедлит процесс — сборка может прерываться из-за нехватки оперативной памяти.
- 💻 Оперативная память: желательно 16 ГБ и больше; на 8 ГБ сборка современных версий Android часто падает с ошибками нехватки памяти.
- 💾 Диск: минимум 250–400 ГБ свободного места, предпочтительно SSD — на HDD выкачивание исходников и сборка займут в разы больше времени.
- 🐧 ОС: 64-битный дистрибутив Linux, официально поддерживается Ubuntu LTS. Сборка на Windows и macOS официально не поддерживается.
- ⚙️ Процессор: чем больше ядер, тем быстрее идёт компиляция — сборка распараллеливается.
Точные требования меняются от версии к версии Android, поэтому перед началом сверьтесь с актуальным разделом документации AOSP о требованиях к сборочному окружению. Если свободного диска или памяти не хватает, альтернатива — аренда облачного сервера с подходящими характеристиками.
Установка инструментов и загрузка исходников
Первым делом установите необходимые пакеты. В документации AOSP приведён актуальный список зависимостей для каждой поддерживаемой версии Ubuntu; обычно это компиляторы, библиотеки, git, python и инструменты сборки. Также понадобится утилита repo — менеджер репозиториев Google, который управляет сотнями git-репозиториев, из которых состоит Android.
Установка repo выполняется так:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Далее создайте рабочую директорию, инициализируйте репозиторий с нужной веткой (тегом) Android и запустите синхронизацию:
mkdir aosp && cd aosp
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r1
repo sync -j$(nproc)
Конкретный тег версии выбирайте из официального списка тегов и сборок AOSP — он должен соответствовать уровню обновления безопасности, который вы хотите получить. Синхронизация скачивает десятки гигабайт и при нестабильном соединении может прерываться; в этом случае просто повторите repo sync — загрузка продолжится с места обрыва.
⚠️ Внимание: не прерывайте repo sync отключением сети или перезагрузкой на середине — повреждённые репозитории могут потребовать повторной полной синхронизации. Если процесс завис, проверьте соединение и запустите команду заново.
Дерево устройства, вендорные бинарники и ядро
После загрузки AOSP у вас есть только «скелет» системы. Чтобы прошивка заработала на конкретном смартфоне, добавьте три компонента.
Device tree — конфигурационные файлы устройства: параметры разделов, флаги компиляции, список включаемых пакетов. Для поддерживаемых сообществом устройств деревья публикуются на GitHub в организациях вроде LineageOS или в репозиториях независимых разработчиков. Для Pixel часть конфигураций доступна прямо в AOSP.
Вендорные бинарники — закрытые драйверы (GPU, модем, камера, аудио). Для Google Pixel их можно скачать с официальной страницы драйверов Google и распаковать в дерево исходников. Для других устройств бинарники извлекают из стоковой прошивки скриптами extract-files.sh, которые обычно идут вместе с device tree.
Ядро. Производители обязаны публиковать исходники ядра по лицензии GPL — их стоит искать на официальных порталах для разработчиков соответствующего бренда. Для многих устройств используются прекомпилированные ядра из стоковой прошивки, что упрощает сборку, но ограничивает модификации.
Что такое lunch и combo в сборке Android
После настройки окружения командой source build/envsetup.sh нужно выбрать цель сборки командой lunch. Она определяет устройство и тип сборки: user (релизная, без отладки), userdebug (с root-доступом через adb для тестов) или eng (инженерная, максимум отладочных инструментов). Для повседневного использования обычно выбирают userdebug или user.
Компиляция прошивки
Когда исходники, дерево устройства и бинарники на месте, настройте окружение и запустите сборку:
source build/envsetup.sh
lunch aosp_crosshatch-userdebug
make -j$(nproc)
Вместо aosp_crosshatch подставьте кодовое имя вашей цели, доступное в списке lunch. Первая сборка занимает от пары часов на мощной машине до суток на слабой — это нормально. Повторные сборки после небольших правок идут значительно быстрее благодаря инкрементальной компиляции.
- 🔥 Ошибка нехватки памяти: уменьшите параллелизм, например
make -j4, или добавьте swap-файл. - 🧩 Ошибка в конкретном модуле: читайте лог выше строки FAILED — обычно там указана реальная причина (отсутствующий файл, конфликт версий).
- 🧹 Странные сбои после правок: выполните
make cleanи соберите заново. - 📁 Результат: готовые образы лежат в каталоге
out/target/product/<устройство>/— там появятсяboot.img,system.imgи другие разделы.
☑️ Проверка перед запуском компиляции
Прошивка собранного образа на устройство
Для установки собранной прошивки загрузчик устройства должен быть разблокирован. Процедура разблокировки зависит от производителя: на Pixel это команда fastboot flashing unlock, у других брендов — свои механизмы, вплоть до официальных заявок на разблокировку. Точную процедуру для вашей модели смотрите в официальной документации производителя — универсальной комбинации не существует.
⚠️ Внимание: разблокировка загрузчика на большинстве устройств стирает все пользовательские данные и может повлиять на гарантию и работу банковских приложений. Сделайте резервную копию заранее и сохраните стоковую прошивку, чтобы иметь возможность откатиться.
Загрузив устройство в режим fastboot, прошейте образы:
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash vendor vendor.img
fastboot -w reboot
Набор разделов зависит от устройства и версии Android: на современных аппаратах с динамическими разделами часто используется команда fastboot flashall или fastboot update с zip-пакетом. Если устройство не загружается после прошивки (bootloop), возможная причина — несовпадение вендорных бинарников с версией сборки; вернитесь к шагу извлечения бинарников и сверьте версии.
Сборка кастомной прошивки на базе LineageOS и альтернативы
Полная сборка с нуля из AOSP — не единственный путь. Если цель — получить прошивку с изменениями для конкретного устройства, часто разумнее собирать на базе готового кастомного проекта, где device tree и бинарники уже поддерживаются сообществом.
| Подход | Сложность | Кому подходит |
|---|---|---|
| Сборка чистого AOSP | Высокая | Разработчики, владельцы Pixel, портирование на новое железо |
| Сборка LineageOS из исходников | Средняя | Владельцы официально поддерживаемых устройств |
| Модификация стоковой прошивки (кухни, распаковка образов) | Средняя | Точечные правки без полной пересборки |
| Сборка только ядра (kernel) | Средняя | Тюнинг производительности и энергосбережения |
Сборка LineageOS технически похожа на сборку AOSP: тот же repo, те же команды lunch и make, но манифест загружается с серверов проекта, а инструкции по конкретным устройствам публикуются в его официальной вики. Это самый предсказуемый путь для новичка — по поддерживаемым моделям есть пошаговые руководства с проверенными конфигурациями.
Типичные ошибки и как их диагностировать
Большинство проблем при сборке и прошивке сводится к нескольким повторяющимся сценариям. Знание их экономит часы отладки.
Сборка падает на случайных модулях. Обычно это нехватка ОЗУ или места на диске. Проверьте df -h и free -h, уменьшите число потоков сборки.
Устройство не определяется в fastboot. Проверьте udev-правила в Linux, качество USB-кабеля и порт — лучше использовать порт напрямую на материнской плате, без хабов.
Bootloop после прошивки. Возможные причины: несовпадение версии вендорных бинарников и системы, прошивка не всех необходимых разделов, повреждённый boot-образ. Порядок действий: прошейте стоковый образ обратно, убедитесь, что устройство работает, затем повторите процесс, сверяя каждый шаг.
⚠️ Внимание: не прошивайте образы, собранные для другого устройства или другой ревизии железа, даже если модель кажется похожей. Это может привести к состоянию «кирпича», восстановление из которого потребует сервисных режимов или обращения в сервисный центр.
Часто задаваемые вопросы
Можно ли собрать прошивку Android на Windows?
Официально сборка AOSP поддерживается только на Linux. Теоретически можно использовать виртуальную машину или WSL2, но производительность и стабильность будут заметно ниже, а часть инструментов может работать некорректно. Рекомендуемый вариант — отдельная машина или раздел с Ubuntu LTS.
Сколько времени занимает первая сборка?
Зависит от железа и версии Android: на многоядерном процессоре с SSD — несколько часов, на слабой машине — сутки и более. Скачивание исходников при медленном интернете также может занять много часов из-за объёма в десятки гигабайт.
Можно ли собрать прошивку для устройства без исходников от производителя?
Практически нет. Без device tree, вендорных бинарников и исходников ядра рабочую прошивку не собрать. Максимум, что возможно, — модификация готовой стоковой прошивки (распаковка, правка и перепаковка образов), но это другой класс задач.
Нужен ли root для установки собранной прошивки?
Нет. Для прошивки через fastboot нужен разблокированный загрузчик, а не root-доступ. Более того, сборка типа user уже лишена root, а userdebug предоставляет root через adb для отладки.
Чем сборка из исходников отличается от установки готовой кастомной прошивки?
Установка готовой прошивки — это просто прошивка чужого собранного образа. Сборка из исходников даёт полный контроль: вы можете менять код системы, удалять компоненты, добавлять свои приложения и патчи безопасности. Цена вопроса — время, требования к железу и необходимость разбираться в устройстве сборочной системы.