Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

Обзор всего процесса проверки и обновления кода см. В разделе « Срок службы исправления» .

Выбираем филиал

Некоторые требования к среде сборки определяются версией исходного кода, который вы планируете компилировать. Полный список доступных веток см. В разделе « Номера сборки» . Вы также можете загрузить и собрать последний исходный код (называемый 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 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 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_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 ветку.

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

При установке по умолчанию macOS работает в файловой системе с сохранением регистра, но без учета регистра. Этот тип файловой системы не поддерживается Git и вызывает ненормальное поведение некоторых команд Git (например, git status ). По этой причине мы рекомендуем всегда работать с исходными файлами AOSP в файловой системе с учетом регистра. Это довольно легко сделать с помощью образа диска, который обсуждается ниже.

Когда доступна соответствующая файловая система, создание master ветки в современной среде macOS не вызывает затруднений. Более ранние ветки требуют некоторых дополнительных инструментов и SDK.

Создание образа диска с учетом регистра

Вы можете создать файловую систему с учетом регистра в существующей среде macOS, используя образ диска. Чтобы создать образ, запустите Disk Utility и выберите New Image . Размер 250 ГБ - это минимум для завершения сборки; больше места лучше для будущего роста. Использование разреженных изображений экономит место, позволяя при необходимости расти. В качестве формата тома выберите с учетом регистра, с журналированием .

Вы также можете создать файловую систему из оболочки с помощью следующей команды:

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage

Это создает файл .dmg.sparseimage который при подключении действует как диск с форматированием, необходимым для разработки под Android.

Если позже вам понадобится больший том, вы можете изменить размер разреженного изображения с помощью следующей команды:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

Для образа диска с именем android.dmg.sparseimage хранящегося в вашем домашнем каталоге, вы можете добавить вспомогательные функции в ~/.bash_profile :

  • Чтобы смонтировать образ при выполнении mountAndroid :
    # mount the android file image
    mountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
  • Чтобы отключить его при umountAndroid :
    # unmount the android file image
    umountAndroid() { hdiutil detach /Volumes/android; }

После того, как вы установили том android , вы делаете всю свою работу там. Вы можете извлечь его (размонтировать) так же, как внешний диск.

Установка Xcode и других пакетов

  1. Установите инструменты командной строки Xcode:
    xcode-select --install
    Для более старых версий macOS (10.8 или ниже) необходимо установить Xcode с сайта разработчиков Apple . Если вы не зарегистрированы как разработчик Apple, вы должны создать Apple ID для загрузки.
  2. Установите MacPorts или Homebrew для управления пакетами.
  3. Убедитесь, что связанный каталог находится на вашем пути в вашем файле ~/.bash_profile :
    1. MacPorts - /opt/local/bin должен располагаться перед /usr/bin :
      export PATH=/opt/local/bin:$PATH
    2. Домашнее пиво - /usr/local/bin :
      export PATH=/usr/local/bin:$PATH
    3. Для MacPorts:
      POSIXLY_CORRECT=1 sudo port install git gnupg
      .
    4. Для Homebrew:
      brew install git gnupg2
      .

    Установка ограничения файлового дескриптора

    В macOS ограничение по умолчанию на количество одновременных открытых файловых дескрипторов слишком мало, и процесс сборки с высокой степенью параллелизма может превышать это ограничение. Чтобы увеличить ограничение, добавьте следующие строки в свой ~/.bash_profile :

    # set the number of open files to be 1024
    ulimit -S -n 1024

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

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