Исходное дерево Android находится в репозитории Git, размещенном Google. Репозиторий Git включает метаданные для исходного кода Android, включая изменения в исходном коде и время внесения изменений. На этой странице описывается, как загрузить исходное дерево для определенной строки кода Android.
Чтобы начать с заводского образа для конкретного устройства вместо загрузки исходного кода, см. Выбор сборки устройства .
Инициализация клиента репо
После установки Repo Launcher настройте свой клиент для доступа к исходному репозиторию Android:
Создайте пустой каталог для хранения ваших рабочих файлов. Дайте ему любое имя:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
Настройте Git с вашим настоящим именем и адресом электронной почты. Чтобы использовать инструмент проверки кода Gerrit, вам нужен адрес электронной почты, связанный с зарегистрированной учетной записью Google . Убедитесь, что это действующий адрес, на который вы можете получать сообщения. Имя, которое вы указываете здесь, отображается в атрибуциях ваших отправленных кодов.
git config --global user.name Your Name
git config --global user.email you@example.com
Запустите
repo init
, чтобы получить последнюю версию Repo с последними исправлениями ошибок. Вы должны указать URL-адрес для манифеста, который указывает, где в вашем рабочем каталоге размещены различные репозитории, включенные в исходный код Android.repo init -u https://android.googlesource.com/platform/manifest
Чтобы проверить основную ветку:
repo init -u https://android.googlesource.com/platform/manifest -b master
Чтобы извлечь ветку, отличную от master , укажите ее с помощью
-b
. Список ветвей см. в разделе Теги и сборки исходного кода .Для Питона 2
Для Питона 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
(quiet). Все параметры см. в Справочнике по командам репо .
Использование аутентификации
По умолчанию доступ к исходному коду 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
Зеркало можно хранить на сервере локальной сети и получать к нему доступ через 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, используйте предварительный просмотр двоичных файлов . При создании основной ветки для устройства используйте двоичные файлы для самого последнего пронумерованного выпуска или с самой последней датой.
Извлечение проприетарных двоичных файлов
Каждый набор двоичных файлов представляет собой самораспаковывающийся скрипт в сжатом архиве. Распакуйте каждый архив, запустите прилагаемый самораспаковывающийся скрипт из корня исходного дерева, а затем подтвердите свое согласие с условиями прилагаемого лицензионного соглашения. Двоичные файлы и соответствующие им make-файлы устанавливаются в иерархию vendor/
дерева исходного кода.
Очистить
Чтобы новые установленные двоичные файлы правильно учитывались после извлечения, удалите существующие выходные данные любой предыдущей сборки, используя:
make clobber