Как скачать и собрать AOSP Android 15 из исходников — краткий ответ
Кратко: берём официальные исходники AOSP через инструмент repo (android.googlesource.com), sync, запускаем стандартную цепочку build/envsetup.sh → lunch → m. Ниже — готовый набор команд, требования к железу и советы по устранению типичных ошибок.
Где взять исходники и как скачать
Официальный источник — AOSP (репозитории на android.googlesource.com). Рабочий сценарий для Android 15:
- Установите repo (пример):
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
- Создайте папку и инициализируйте манифест для ветки Android 15:
mkdir ~/aosp15 && cd ~/aosp15
repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r18
- Скачайте исходники (занимает десятки — сотни гигабайт и часы):
repo sync -c -j$(nproc) --force-sync
Флаги: -c (current-branch, экономит место), -j$(nproc) — параллельность. Проверяйте актуальную ветку на официальном сайте AOSP перед init.
Для экономии места используйте repo sync -c и --current-branch, но для полного набора фич лучше полное клонирование.
Подготовка окружения и зависимости
Минимальные рекомендации:
- Ubuntu 20.04+ (или другая поддерживаемая дистрибуция)
- 16+ ГБ RAM (рекомендуемо 32+), 300+ ГБ SSD, 8+ ядер CPU
Установка основных пакетов (пример для Ubuntu/Debian):
sudo apt update
sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \
gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev \
x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \
xsltproc unzip fontconfig python3 openjdk-11-jdk
Android 15 требует Java 11:
sudo apt install openjdk-11-jdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Если собираете компоненты на Rust (новые части билд-системы), установите rustup и нужный toolchain:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup toolchain install 1.75.0
rustup target add aarch64-linux-android
Пошаговая сборка
- Настройте окружение сборки:
source build/envsetup.sh
- Выберите цель (пример — эмулятор arm64 или Pixel):
lunch aosp_arm64-eng # эмулятор ARM64
# или
lunch aosp_cf_x86_64_phone-eng # эмулятор x86_64 (быстрее)
# для Pixel — используйте соответствующий lunch target (если есть)
- Запустите сборку:
m # полная сборка
# или собрать только ядро:
m kernelimage
Выходные образы появляются в out/target/product/
fastboot flashall -w
(Для конкретных телефонов могут быть дополнительные шаги: factory image, подпись образов и т.п.)
Прошивка устройства и разблокировка bootloader стирают данные и могут привести к потере гарантии. Делайте резервные копии.
Частые ошибки и их решения
- Repo sync зависает или долго: повторите с
--force-sync, увеличьте тайм-аут git, проверьте соединение и disk I/O. - Out of memory при сборке: добавьте swap (рекомендуется 32 ГБ для первых сборок) или используйте машину с большим объёмом RAM.
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- Java-версия: убедитесь, что в PATH именно Java 11; ошибки Soong часто связаны с некорректной версией.
- Soong/Blueprint ошибки: посмотрите логи
out/soong.logи повторите сборку сm -j1для детальной трассировки. - JACK server: если проблема с Java builder:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
FAQ
- Сколько займёт сборка? Первый полный билд на средней машине — 4–12 часов; скачивание исходников — 2–6 часов (зависит от сети).
- Нужны ли GApps? AOSP не включает Google-сервисы. Для их добавления используйте сторонние пакеты после сборки, но это выходит за рамки AOSP.
- Как собрать для Pixel? Найдите соответствующий lunch target (например aosp_komodo-eng) или используйте репозитории производителя/maintainer для проприетарных компонентов.
- Где смотреть логи? Основные логи: консоль сборки,
out/soong.log,out/target/product/<device>/boot.log.
Если нужно, могу сформировать точный набор команд для вашей конфигурации (CPU, RAM, целевое устройство) и подсказать, какие ветки/targets выбрать.