Настройка для разработки AOSP (9.0 или более поздней версии)

Прежде чем скачивать и собирать последнюю версию Android (android17-release) из исходного кода, убедитесь, что ваше оборудование соответствует требованиям и на нем установлено необходимое ПО. Также вам следует ознакомиться со следующими терминами:

Git
Git – это бесплатная распределенная система управления версиями с открытым исходным кодом. Android использует Git для локальных операций, таких как ветвление, фиксация, сравнение и редактирование. Дополнительную информацию о Git можно найти в документации.
Repo
Repo – это оболочка Python для Git, которая упрощает выполнение сложных операций в нескольких хранилищах Git. Repo не заменяет Git для всех операций управления версиями, а лишь упрощает выполнение сложных операций Git. Repo использует файлы манифеста, чтобы объединять проекты Git в суперпроект Android.
Файл манифеста
Файл манифеста – это XML-файл, в котором указано, где в дереве исходного кода AOSP размещены различные проекты Git в исходном коде Android.

Требования к оборудованию Meet

Ваш рабочий компьютер должен соответствовать следующим требованиям к оборудованию:

  • 64-разрядная система x86.

  • Не менее 400 ГБ свободного места на диске для извлечения и сборки кода (250 ГБ для извлечения и 150 ГБ для сборки).

  • Не менее 64 ГБ ОЗУ. Для сборки Android мы используем 72-ядерные компьютеры с 64 ГБ ОЗУ. При такой конфигурации оборудования полная сборка Android занимает около 40 минут, а инкрементная – всего несколько минут. Для сравнения: полная сборка на 6-ядерном компьютере с 64 ГБ ОЗУ занимает около 6 часов.

Требования к операционной системе

На рабочей станции разработчика должен быть установлен любой 64-разрядный дистрибутив Linux с библиотекой GNU C (glibc) версии 2.17 или более поздней.

Установите необходимые пакеты

Для сборки Android 11 или более поздней версии необходимо использовать Ubuntu 18.04 или более поздней версии. Чтобы установить необходимые пакеты для Ubuntu 18.04 или более поздней версии, выполните следующую команду:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

В числе прочего эта команда устанавливает Git, который используется для скачивания исходного кода AOSP.

Установите необходимое ПО

Прежде чем начать работу с AOSP, необходимо установить OpenJDK, Make, Python 3 и Repo. В последней версии Android есть встроенные версии OpenJDK, Make и Python 3, поэтому дополнительные действия по установке не требуются. В следующем разделе объясняется, как установить Repo.

Установка Repo

Выполните следующие шаги, чтобы установить Repo:

  1. Скачайте информацию о текущем пакете:

    sudo apt-get update
  2. Чтобы установить средство запуска Repo, выполните следующую команду:

    sudo apt-get install repo

    Программа запуска Repo предоставляет скрипт Python, который инициализирует извлечение и скачивает полный инструмент Repo.

    Если все в порядке, перейдите к шагу 4.

  3. При необходимости установите Repo вручную, используя следующие команды:

    export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
    curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
    gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
    curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo

    Первые три команды создают временный файл, скачивают в него Repo и проверяют, что предоставленный ключ соответствует требуемому. Если эти команды выполнены успешно, последняя команда устанавливает средство запуска Repo.

  4. Проверьте версию программы запуска Repo:

    repo version

    В выводе должна быть указана версия 2.4 или выше, например:

    repo launcher version 2.45
    

Как задать альтернативный выходной каталог

По умолчанию выходные данные каждой сборки хранятся в подкаталоге out/ соответствующего дерева исходного кода. Вы можете переопределить этот каталог, экспортировав переменную среды OUT_DIR. Например, если вы хотите хранить выходные данные на другом диске, вы можете указать его в OUT_DIR:

export OUT_DIR=my_other_drive

Что дальше?