Скачивание исходного кода

Дерево исходного кода Android находится в репозитории Git, размещенном в Google. Репозиторий Git включает метаданные для источника Android, включая изменения в источнике и дату внесения изменений. На этой странице описывается, как загрузить дерево исходных текстов для конкретной строки кода Android.

Для того, чтобы начать с заводским образом для конкретного устройства вместо загрузки источника см Выбора сборки устройства .

Инициализация клиента репо

После установки Repo Launcher , настроить клиент для доступа к хранилищу Android источника:

  1. Создайте пустой каталог для хранения ваших рабочих файлов. Дайте ему любое имя:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Настройте Git, указав свое настоящее имя и адрес электронной почты. Для того, чтобы использовать Геррит инструмент кода обзора, вам нужен адрес электронной почты , который подключен с зарегистрированной учетной записи Google . Убедитесь, что это действующий адрес, на который вы можете получать сообщения. Имя, которое вы здесь указываете, отображается в атрибутах вашего кода.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. Выполнить repo init , чтобы получить последнюю версию Репо с его самыми последними исправлениями ошибок. Вы должны указать URL-адрес для манифеста, который указывает, где в вашем рабочем каталоге размещаются различные репозитории, включенные в исходный код Android.

    repo init -u https://android.googlesource.com/platform/manifest
    

    Чтобы проверить главную ветку:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    Чтобы проверить ветку, кроме хозяина, указать его с -b . Список филиалов, см теги исходного кода и сборок .

    Для Python 2

    Для Python 3

    Если вы получаете « /usr/bin/env 'python' no such file or directory » сообщения об ошибке, используйте один из следующих решений:

    Если Ubuntu 20.04.2 LTS недавно установлен ( по сравнению модернизированы) версия Linux:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    При использовании Git версии 2.19 или выше, вы можете указать --partial- clone при выполнении repo init . Это делает использование Git и частичного клон возможности загружать только объекты Git , когда это необходимо, а не загружать все. Поскольку использование частичных клонов означает, что многие операции должны взаимодействовать с сервером, используйте следующее, если вы разработчик и используете сеть с низкой задержкой:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    Для ОС Windows только: если вы получаете сообщение об ошибке , указывающее , что символические ссылки не могут быть созданы, в результате чего repo init на провал, ссылка на GitHub Символические ссылки документацию для создания этих, или включить их поддержку. Для не-администраторов, см , учитывающий не-администраторам создавать символические ссылки в разделе.

Успешная инициализация заканчивается сообщением о том, что Repo инициализирован в вашем рабочем каталоге. Ваш каталог клиента теперь содержит .repo каталог , в котором файлы , такие как манифест хранится.

Скачивание дерева исходных текстов Android

Чтобы загрузить дерево исходного кода Android в рабочий каталог из репозиториев, как указано в манифесте по умолчанию, запустите:

repo sync

Для скорости синхронизаций, передать -c (текущая ветвь) и -j threadcount флаги:

repo sync -c -j8

Исходные файлы Android загружаются в ваш рабочий каталог под их именами проектов.

Для подавления вывода, передать -q (тихий) флаг. См Repo Command Reference для всех вариантов.

Использование аутентификации

По умолчанию доступ к исходному коду Android анонимен. Чтобы защитить серверы от чрезмерного использования, каждый IP-адрес связан с квотой.

При совместном использовании IP-адреса с другими пользователями (например, при доступе к исходным репозиториям из-за брандмауэра NAT) квоты могут срабатывать даже для шаблонов регулярного использования (например, если многие пользователи синхронизируют новых клиентов с того же IP-адреса в пределах одного короткий период).

В этом случае вы можете использовать аутентифицированный доступ, который затем использует отдельную квоту для каждого пользователя, независимо от IP-адреса.

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

Далее, сила доступ с проверкой подлинности с помощью манифеста URI https://android.googlesource.com/a/platform/manifest . Обратите внимание , как /a/ каталог префикс спусковой обязательная аутентификация. Вы можете преобразовать существующий клиент для использования обязательной аутентификации с помощью следующей команды:

repo init -u https://android.googlesource.com/a/platform/manifest

Устранение проблем с сетью

При загрузке из-за прокси (что является обычным явлением в некоторых корпоративных средах) вам может потребоваться явно указать прокси для использования Repo:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Реже, проблемы с подключением клиентов опыта Linux, застревая в середине загрузки ( как правило , во время приема объектов). Изменение настроек стека TCP / IP и использование непараллельных команд может улучшить ситуацию. У вас должен быть root-доступ, чтобы изменить настройку TCP:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

Использование локального зеркала

При использовании нескольких клиентов, особенно в ситуациях, когда пропускная способность ограничена, лучше создать локальное зеркало всего содержимого сервера и синхронизировать клиентов с этого зеркала (что не требует доступа к сети). Загрузка полного зеркала меньше, чем загрузка двух клиентов, и содержит больше информации.

Эти инструкции предполагают , что зеркало создается в /usr/local/aosp/mirror . Сначала создайте и синхронизируйте само зеркало. Обратите внимание на --mirror флаг, который можно указать только при создании нового клиента:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

Когда зеркало синхронизируется, вы можете создавать из него новых клиентов. Обратите внимание, что вы должны указать абсолютный путь:

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

Наконец, чтобы синхронизировать клиента с сервером, синхронизируйте зеркало с сервером, а затем клиент с зеркалом:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

Можно сохранить зеркало на сервере LAN и получить к нему доступ через NFS, SSH или Git. Также можно сохранить его на съемном диске и передавать его пользователям или машинам.

Проверка тегов Git

Загрузите следующий открытый ключ в свою базу данных ключей GnuPG. Ключ используется для подписи аннотированных тегов, представляющих выпуски.

gpg --import

Копировать и вставить ключ указанных ниже, затем введите значение EOF (Ctrl-D) для завершения процесса ввода и ключей.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

После импорта ключей вы можете проверить любой тег с помощью:

git tag -v TAG_NAME

Получите проприетарные двоичные файлы

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

Скачать проприетарные двоичные файлы

Вы можете скачать официальные бинарные файлы для поддерживаемых устройств , работающих под управлением меченого релиза AOSP ветвь из водителей компании Google . Эти двоичные файлы добавляют доступ к дополнительным аппаратным возможностям с закрытым исходным кодом. Для создания мастер - ветви AOSP, используйте Бинарники Preview вместо этого. При создании мастер - ветви для устройства, используют двоичные файлы для последнего нумерованного выпуска или с самой последней датой.

Извлечь проприетарные двоичные файлы

Каждый набор двоичных файлов представляет собой самораспаковывающийся скрипт в сжатом архиве. Распакуйте каждый архив, запустите прилагаемый самораспаковывающийся скрипт из корня исходного дерева, затем подтвердите свое согласие с условиями прилагаемого лицензионного соглашения. Двоичные и их соответствия Makefiles установлены в vendor/ иерархии исходного дерева.

Очистить

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

make clobber