Как скачать и собрать AOSP Android 15 из исходников — краткий ответ

Кратко: берём официальные исходники AOSP через инструмент repo (android.googlesource.com), sync, запускаем стандартную цепочку build/envsetup.sh → lunch → m. Ниже — готовый набор команд, требования к железу и советы по устранению типичных ошибок.

Где взять исходники и как скачать

Официальный источник — AOSP (репозитории на android.googlesource.com). Рабочий сценарий для Android 15:

  1. Установите repo (пример):
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
  1. Создайте папку и инициализируйте манифест для ветки Android 15:
mkdir ~/aosp15 && cd ~/aosp15
repo init -u https://android.googlesource.com/platform/manifest -b android-15.0.0_r18
  1. Скачайте исходники (занимает десятки — сотни гигабайт и часы):
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

Пошаговая сборка

  1. Настройте окружение сборки:
source build/envsetup.sh
  1. Выберите цель (пример — эмулятор arm64 или Pixel):
lunch aosp_arm64-eng          # эмулятор ARM64
# или
lunch aosp_cf_x86_64_phone-eng  # эмулятор x86_64 (быстрее)
# для Pixel — используйте соответствующий lunch target (если есть)
  1. Запустите сборку:
m            # полная сборка
# или собрать только ядро:
m kernelimage

Выходные образы появляются в out/target/product//. Для установки на устройство — разблокируйте загрузчик и прошейте через fastboot:

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 выбрать.