Сборка собственной прошивки Android начинается не с кода, а с конкретной модели устройства: без дерева устройства (device tree), ядра и проприетарных блобов именно для вашего смартфона собранный образ просто не загрузится. Прежде чем скачивать исходники AOSP или LineageOS, убедитесь, что для вашей модели существуют опубликованные исходники ядра и vendor-раздела — без них проект придётся начинать с портирования, что требует серьёзного опыта.
Собственная прошивка даёт полный контроль над системой: можно убрать лишние предустановленные приложения, добавить свои функции, изменить интерфейс или собрать систему под специфические задачи — например, для киоска, планшета в автомобиле или тестового стенда. Но это и риск: ошибка в сборке может привести к незагружающемуся устройству, а разблокировка загрузчика обычно аннулирует гарантию и сбрасывает данные.
В этой статье разберём весь путь: от подготовки компьютера и получения исходников до сборки образа и его установки на устройство. Материал ориентирован на тех, кто уже уверенно работает с командной строкой Linux.
Что такое кастомная прошивка и какие варианты существуют
Под созданием своей прошивки обычно понимают один из трёх подходов, и они сильно различаются по сложности. Первый — модификация готовой прошивки: вы берёте стоковый или уже собранный кастомный образ, распаковываете его, меняете содержимое (удаляете приложения, правите build.prop, добавляете файлы) и упаковываете обратно. Это самый доступный путь для новичка.
Второй путь — сборка из исходников на базе AOSP (Android Open Source Project) или популярных открытых проектов вроде LineageOS, crDroid, Pixel Experience. Здесь вы компилируете систему целиком, что требует мощного компьютера и понимания структуры исходного кода Android.
Третий вариант — портирование прошивки на устройство, для которого её официально не существует. Это самый сложный сценарий, требующий знания ядра Linux, работы с драйверами и отладки загрузки.
- 🔧 Модификация готового образа — быстро, подходит для первых экспериментов
- 📦 Сборка AOSP/LineageOS из исходников — полный контроль, высокие требования к железу
- 🚀 Портирование на новое устройство — уровень продвинутого разработчика
- 🧩 Гибридный подход — сборка из исходников с готовым device tree сообщества
Требования к компьютеру и программному обеспечению
Сборка Android из исходников — ресурсоёмкая задача. Исходный код AOSP занимает десятки гигабайт, а вместе с результатами сборки потребуется заметно больше свободного места. Официальная документация Android рекомендует использовать 64-битный Linux, чаще всего для сборки применяют Ubuntu LTS.
Точные требования зависят от версии Android: новые ветки требуют больше оперативной памяти и дискового пространства. Ориентируйтесь на актуальные требования в официальной документации AOSP для конкретной версии — они периодически пересматриваются. Общее правило простое: чем больше ОЗУ и быстрее диск (лучше SSD), тем комфортнее сборка.
Из программного обеспечения понадобятся:
- 💻 Дистрибутив Linux (рекомендуется Ubuntu LTS) — нативно или в виртуальной машине
- 📥 Утилита
repoдля синхронизации исходников иgit - ☕ JDK той версии, которую требует выбранная ветка Android
- 🔌 Пакеты
adbиfastbootдля работы с устройством - 🛠 Сборочные зависимости: компиляторы, библиотеки, Python
Подготовка: разблокировка загрузчика и резервная копия
Прежде чем устройство примет стороннюю прошивку, необходимо разблокировать загрузчик (bootloader). Процедура зависит от производителя: одни бренды позволяют разблокировку через fastboot oem unlock или fastboot flashing unlock, другие требуют получения кода на официальном портале, третьи официально не дают такой возможности вовсе. Уточните процедуру именно для вашей модели на сайте производителя или в профильной ветке форума XDA Developers.
⚠️ Внимание: разблокировка загрузчика на большинстве устройств приводит к полному стиранию данных (factory reset) и может аннулировать гарантию. Перед началом скопируйте все важные файлы, фото и данные приложений на компьютер или в облако.
Дополнительно сделайте полный дамп разделов стоковой прошивки, если ваше устройство и установленное recovery это позволяют. Наличие полного бэкапа и стокового образа для отката — главная страховка на случай, если собранная прошивка не загрузится.
Также заранее скачайте заводской образ (factory image) вашей модели с официального источника, если производитель его публикует. Это позволит вернуть устройство в исходное состояние в любой момент.
Получение исходного кода
Исходники Android распространяются через систему repo, которая управляет сотнями git-репозиториев одновременно. Процесс начинается с инициализации локального манифеста и синхронизации — этот этап может занять часы в зависимости от скорости интернета.
Для чистого AOSP инициализация выглядит примерно так (ветку укажите актуальную для вашего проекта):
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r1
repo sync -c -j$(nproc --all)
Если вы собираете LineageOS, манифест берётся из репозитория проекта, а ветка соответствует поддерживаемой версии. Далее нужно добавить специфичные для устройства компоненты:
- 📱 Device tree — описание аппаратной конфигурации, разделов и параметров сборки
- 🧠 Исходники ядра — конкретная версия ядра Linux для вашего чипа
- 📦 Vendor-блобы — проприетарные бинарные библиотеки (графика, модем, камера), которые не публикуются в открытом виде
Эти компоненты для многих популярных моделей поддерживаются сообществом на GitHub. Для LineageOS существует механизм автоматического подтягивания зависимостей через файл lineage.dependencies. Если для вашей модели готовых исходников нет, vendor-блобы иногда извлекают из стоковой прошивки специальными скриптами — но это работает не всегда и требует проверки совместимости.
Что такое vendor-блобы и почему без них нельзя
Производители чипов (Qualcomm, MediaTek и др.) не публикуют исходный код драйверов графики, модема, камеры и аудио. Эти компоненты поставляются в виде готовых бинарных файлов — так называемых блобов. Без них собранная система загрузится, но часть оборудования работать не будет: пропадёт связь, камера или аппаратное ускорение графики. Именно поэтому сборка под устройство без опубликованных блобов — серьёзная инженерная задача.
Настройка окружения и сборка прошивки
Когда исходники загружены, настраивается сборочное окружение. Стандартная последовательность для AOSP-подобных проектов выглядит так:
source build/envsetup.sh
lunch aosp_codename-userdebug
mka bacon
Здесь lunch выбирает целевое устройство и тип сборки (вместо codename подставляется кодовое имя вашей модели), а команда сборки запускает компиляцию. В разных проектах финальная команда отличается: где-то это mka bacon, где-то make otapackage или brunch codename — сверяйтесь с документацией выбранного проекта.
Первая сборка обычно занимает от пары часов до целого рабочего дня — всё зависит от процессора, объёма ОЗУ и скорости диска. Повторные сборки после небольших правок проходят значительно быстрее благодаря инкрементальной системе сборки и кэшу ccache.
☑️ Проверка перед запуском сборки
Если сборка падает с ошибкой, читайте лог с конца: первая реальная ошибка обычно находится выше финальных строк. Типичные причины сбоев — отсутствующие зависимости, нехватка памяти при линковке, конфликт версий ядра и device tree.
Модификация системы: что можно изменить
Смысл собственной прошивки — в изменениях, которых нет в стоке. Вот что чаще всего правят разработчики на этапе сборки:
| Изменение | Где делается | Сложность |
|---|---|---|
| Удаление предустановленных приложений | Манифесты сборки, списки пакетов | Низкая |
| Правка build.prop (DPI, регион, флаги) | Файлы конфигурации устройства | Низкая |
| Добавление root-доступа (например, Magisk) | Boot-образ, пост-установка | Средняя |
| Изменение интерфейса и фреймворка | Исходники framework/base, SystemUI | Высокая |
| Настройка ядра (губернаторы, частоты) | Исходники ядра, defconfig | Высокая |
Начинать лучше с малого: уберите ненужные пакеты, поменяйте несколько параметров, соберите и проверьте. Каждое изменение вносите отдельной правкой и тестируйте по одному — иначе при незагружающейся прошивке вы не поймёте, какое из десяти изменений всё сломало.
Для правок интерфейса и системных функций потребуется знание Java/Kotlin и структуры фреймворка Android. Изменения в frameworks/base влияют на всю систему, поэтому тестируйте их особенно тщательно.
Установка собранной прошивки на устройство
Результатом сборки становится архив с образами разделов (обычно boot.img, system.img и другие) либо готовый flashable ZIP. Установка выполняется через fastboot или кастомное recovery, например TWRP, если оно существует для вашей модели.
Типовой порядок прошивки через fastboot выглядит так (точный набор разделов зависит от устройства и архитектуры разделов — A/B или A-only):
fastboot flash boot boot.img
fastboot flash system system.img
fastboot -w
⚠️ Внимание: не прошивайте образы, собранные под другую модель или другую ревизию устройства. Несовпадение разметки разделов может привести к «окирпичиванию» (hard brick), при котором восстановление возможно только в сервисном режиме или через низкоуровневые инструменты производителя.
После прошивки первая загрузка занимает заметно больше времени, чем обычно — система оптимизирует приложения и создаёт разделы данных. Если устройство зависло на логотипе (bootloop), не паникуйте: загрузитесь в recovery или fastboot и либо очистите данные, либо верните стоковый образ.
Отладка и типичные проблемы
Главный инструмент диагностики — логи. Если устройство загружается, но что-то не работает, подключите его к компьютеру и снимите лог:
adb logcat -b all -d > log.txt
При bootloop полезны логи ядра из recovery (last_kmsg или pstore, если поддерживается). Они показывают, на каком этапе загрузка прервалась: инициализация ядра, монтирование разделов или падение системных сервисов.
⚠️ Внимание: эксперименты с прошивками проводите на устройстве, которое не является вашим основным телефоном. Потеря связи, данных или банковских приложений (часть из них не работает на разблокированных загрузчиках и кастомных прошивках) — реальные последствия, а не теория.
Типичные проблемы первых сборок: неработающий сенсор или камера (несовпадение блобов), отсутствие сети (проблемы с модемными библиотеками), быстрый разряд (неверная конфигурация ядра). Каждая из них решается поиском по логам и сравнением с рабочей конфигурацией сообщества для вашей модели.
Часто задаваемые вопросы
Можно ли собрать прошивку на Windows?
Нативная сборка AOSP официально поддерживается только на Linux (и частично на macOS для старых версий). На Windows используют WSL2 или виртуальную машину с Ubuntu, но это снижает производительность и иногда создаёт проблемы с регистром имён файлов. Для серьёзной работы лучше выделить отдельную Linux-систему.
Нужен ли root для установки собственной прошивки?
Нет, root не требуется. Достаточно разблокированного загрузчика — прошивка ставится через fastboot или кастомное recovery. Root-доступ — отдельная опция, которую можно добавить в собранную систему при желании.
Сколько времени занимает сборка прошивки?
Зависит от железа и версии Android. На современном многоядерном процессоре с SSD первая сборка обычно занимает несколько часов, на слабой машине — сутки и больше. Повторные сборки после мелких правок занимают от минут до часа благодаря инкрементальной компиляции.
Будет ли работать Google Play на самосборной прошивке?
Чистый AOSP не содержит сервисов Google. Их устанавливают отдельно пакетами вроде GApps (через recovery после прошивки), если это предусмотрено выбранным проектом. Учтите, что на устройствах с разблокированным загрузчиком часть функций — бесконтактная оплата, некоторые банковские приложения — может работать некорректно или не работать вовсе.
Что делать, если устройство не загружается после прошивки?
Сначала попробуйте загрузиться в recovery и выполнить сброс данных. Если не помогло — прошейте обратно стоковый заводской образ через fastboot или фирменную утилиту производителя. Именно поэтому перед экспериментами важно заранее скачать стоковую прошивку и убедиться, что способ восстановления для вашей модели существует и вам понятен.