Создание среды сборки

В этом разделе описывается, как настроить локальную рабочую среду для создания исходных файлов Android. Вы должны использовать Linux; сборка под MacOS или Windows не поддерживается. Не забывайте также о важных изменениях в бинарном /usr/bin/python .

Обзор всего процесса проверки и обновления кода см. в разделе Life of a Patch .

Выбор филиала

Некоторые требования к среде сборки определяются версией исходного кода, который вы планируете компилировать. Полный список доступных веток см. в разделе Номера сборок . Вы также можете загрузить и собрать последний исходный код (называемый master ), и в этом случае вы просто опускаете спецификацию ветки при инициализации репозитория.

После выбора ветки следуйте приведенным ниже инструкциям, чтобы настроить среду сборки.

Настройка среды сборки Linux

Эти инструкции применимы ко всем веткам, включая master .

Сборка Android регулярно тестируется на Ubuntu LTS (14.04) и Debian. В большинстве других дистрибутивов должны быть доступны необходимые инструменты сборки.

Для Gingerbread (2.3.x) и более поздних версий, включая ветку master , требуется 64-битная среда. Более старые версии могут быть скомпилированы на 32-битных системах.

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

Вам нужна 64-битная версия Ubuntu.

sudo apt-get 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

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

Вам нужна 64-битная версия Ubuntu (рекомендуется 14.04).

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

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

Вы можете использовать Ubuntu 12.04 для сборки старых версий Android. Версия 12.04 не поддерживается ни в master , ни в последних выпусках.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Установка необходимых пакетов (Ubuntu 10.04-11.10)

Сборка на Ubuntu 10.04-11.10 больше не поддерживается, но может быть полезна для сборки старых выпусков AOSP.

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

В Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

В Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

Настройка USB-доступа

Установите поддерживаемый сообществом набор правил udev по умолчанию для всех устройств Android, следуя инструкциям в разделе Настройка устройства для разработки .

Использование отдельного выходного каталога

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

export OUT_DIR=out_mytarget

Это приведет к тому, что выходные данные сборки будут сохранены в подкаталоге out_mytarget/ исходного дерева. При использовании одного и того же исходного дерева для построения нескольких целей рекомендуется использовать отдельный OUT_DIR для каждой цели.

На некоторых машинах с несколькими устройствами хранения сборка выполняется быстрее при хранении исходных файлов и вывода на отдельных томах. Для повышения производительности выходные данные могут быть сохранены в файловой системе, оптимизированной для скорости, а не для устойчивости к сбоям, поскольку все файлы могут быть восстановлены, если файловая система повреждена.

Чтобы настроить это, экспортируйте переменную OUT_DIR_COMMON_BASE , чтобы указать на место, где будут храниться ваши выходные каталоги.

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

Выходной каталог для каждого отдельного исходного дерева называется в честь каталога, содержащего исходное дерево. Например, если у вас есть исходные деревья /source/master1 и /source/master2 и если OUT_DIR_COMMON_BASE установлено значение /output , выходными каталогами будут /output/master1 и /output/master2 .

Избегайте хранения нескольких исходных деревьев в каталогах с одинаковыми именами, так как в конечном итоге исходные деревья будут совместно использовать выходной каталог с непредсказуемыми результатами. Это поддерживается только в Jelly Bean (4.1) и выше, включая ветку master .

Далее: Загрузите исходный код

Ваша среда сборки готова к работе! Перейдите к загрузке исходников .