На этой странице описан полный процесс отправки изменений в код проекта Android Open Source Project (AOSP), включая порядок запроса на проверку и отслеживания внесенных изменений.
AOSP использует Gerrit — веб-систему проверки кода для проектов, использующих Git.
Подпишите лицензионные соглашения для участников проекта.
Прежде чем вносить какие-либо изменения в код AOSP, вы должны ознакомиться с лицензионными соглашениями для участников и заголовками, а также подписать одно из следующих соглашений:
- Если вы являетесь индивидуальным участником, вносящим вклад только от вашего имени, подпишите Лицензионное соглашение для индивидуальных участников .
- Если вы являетесь сотрудником корпорации, убедитесь, что ваша компания подписала Лицензионное соглашение для корпоративных вкладчиков, уполномочивающее вас делать пожертвования от ее имени.
Создать ветку
Для каждого изменения кода, которое вы планируете внести, выполните следующие действия:
Создайте новую ветку в соответствующем репозитории Git. Ветка — это не копия исходных файлов, а указатель на конкретный коммит, что делает создание локальных веток и переключение между ними очень простой операцией. Использование веток позволяет идентифицировать изменения друг от друга. Для создания ветки выполните следующую команду:
repo start BRANCH_NAMEВ одном репозитории можно одновременно создавать несколько независимых веток. Ветка BRANCH_NAME является локальной для вашей рабочей области и не включается ни в Gerrit, ни в итоговое дерево исходного кода. Ветки также специфичны для проекта, в котором вы находитесь, поэтому, если вам нужно изменить файлы в разных проектах в рамках одного и того же изменения, вам потребуется отдельная ветка в каждом проекте, где вы изменяете файлы.
(необязательно) Убедитесь, что ветка создана:
repo status .Вы должны увидеть свою недавно созданную ветку. Например:
project frameworks/native/ branch mynewbranch
Произведите и проверьте свою сдачу.
Выполните следующие шаги, чтобы внести и проверить изменения:
Чтобы убедиться, что вы работаете с самой актуальной версией кода, выполните синхронизацию всего кода:
repo syncЕсли во время синхронизации возникнут какие-либо конфликты, обратитесь к шагам 2-4 раздела « Устранение конфликтов синхронизации» .
Найдите код, который нужно изменить. Для поиска кода воспользуйтесь функцией Android Code Search . С помощью Android Code Search вы можете просмотреть исходный код AOSP в том виде, в котором он представлен при фактическом использовании. Дополнительную информацию см. в разделе «Начало работы с Code Search» . Чтобы просмотреть весь код в последней ветке выпуска AOSP в Android Code Search, перейдите по ссылке
https://cs.android.com/android/platform/superproject/.Изменяйте или добавляйте исходные файлы. Для внесения любых изменений:
Определите, нужно ли вам использовать флаги запуска новых функций , и если да, то реализуйте их для вашего нового кода.
Следуйте рекомендациям, изложенным в разделе «Включение заголовков лицензий» .
Для кода на Java следуйте стилю оформления кода AOSP Java для участников проекта .
Некоторые части AOSP написаны на Kotlin (
.kt), и вы можете использовать Kotlin в тех областях платформы, которые уже написаны на Kotlin. Для получения дополнительной информации о Kotlin в Android см. руководство по стилю Kotlin для разработчиков Android и руководство по взаимодействию Kotlin и Java . Более подробные рекомендации по Kotlin см. на сайте языка Kotlin .При разработке API следуйте рекомендациям Android API . Используйте эти рекомендации, чтобы понять контекст решений Android относительно API. Добавления и изменения API платформы проверяются Metalava .
Организуйте и внедрите свои изменения.
Коммит — это основная единица системы контроля версий в Git, представляющая собой снимок структуры каталогов и содержимого файлов всего проекта. Чтобы зафиксировать изменения, выполните следующие шаги:
По умолчанию Git регистрирует, но не отслеживает внесенные вами изменения. Чтобы указать Git отслеживать ваши изменения, необходимо пометить или добавить эти изменения в индекс для включения в коммит. Выполните эту команду, чтобы добавить изменение в индекс:
git add -AЭта команда отслеживает изменения, внесенные вами в любые файлы.
Возьмите файлы из промежуточной области и зафиксируйте их или сохраните в локальной базе данных:
git commit -sПо умолчанию открывается текстовый редактор, и вам предлагается ввести сообщение для коммита.
Укажите сообщение коммита в следующем формате:
Строка 1: Заголовок. Кратко опишите внесенные изменения в одной строке (максимум 50 символов). Рекомендуется использовать префиксы для описания измененной области, а затем описание внесенных изменений в этом коммите, например, как в следующем примере, содержащем изменения пользовательского интерфейса:
ui: Removes deprecated widgetСтрока 2: Пустая строка. После заголовка оставьте пустую строку.
Строка 3: Основная часть. Предоставьте подробное описание, которое не превышает 72 символов и не требует переноса строк. Опишите, какую проблему решает данное изменение и как. Хотя основная часть необязательна, она полезна для тех, кому нужно будет вернуться к этому изменению. Обязательно укажите краткую информацию о любых предположениях или справочных данных, которые могут быть важны при работе над этой функцией с другими участниками проекта.
Чтобы прочитать статью в блоге о хороших описаниях коммитов (с примерами), см. «Как написать сообщение коммита в Git» .
Сохраните коммит.
Уникальный идентификатор изменения, а также ваше имя и адрес электронной почты, предоставленные во время repo init , автоматически добавляются к сообщению вашего коммита.
Загрузите изменения для проверки.
После того, как вы зафиксируете изменения в своей личной истории Git, загрузите их в Gerrit:
Выполните следующую команду, чтобы загрузить все ваши коммиты во всех ваших проектах:
repo uploadВсе изменения во всех проектах включены в загружаемый файл.
Вам будет предложено запустить скрипты-перехватчики.
Нажмите клавишу «a» , а затем Enter .
Вам будет предложено подтвердить загрузку:
Upload project frameworks/native/ to remote branch android17-release: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?Нажмите «y» , а затем Enter , чтобы подтвердить загрузку.
Вы должны получить сообщение, похожее на remote: SUCCESS .
Запросить отзыв
После успешной загрузки Repo предоставит вам ссылку на ваши изменения в Gerrit. Щелкните ссылку, чтобы просмотреть ваши изменения на сервере проверки, добавить комментарии или запросить конкретных рецензентов для ваших изменений. Все изменения в коде должны быть проверены соответствующими владельцами кода.
Чтобы запросить отзыв:
В Gerrit нажмите кнопку «Предложить владельцев» :

Рисунок 1. Предложенная ссылка на владельцев в Gerrit.
Открывается диалоговое окно рецензента. В этом диалоговом окне отображается список владельцев кода, которые могут проверить ваши изменения.
Нажмите на владельца кода, чтобы добавить его в свой отзыв.
Кнопка «ОТПРАВИТЬ» активирована.
(Необязательно) Введите адрес электронной почты любого другого лица, которому вы хотели бы предложить проверить внесенные изменения.
Нажмите ОТПРАВИТЬ , чтобы отправить изменения на проверку.
Владельцы кода проверяют ваши изменения в коде, и если они одобрены, выбирают это изменение и объединяют его с внутренней веткой разработки.
Определить статус изменений
Чтобы определить статус файлов, включенных в ваши изменения, проверьте наличие следующих значков рядом с файлами, включенными в изменения:
- (значок галочки): Одобрено владельцем кода.
- (значок крестика): Не одобрено владельцем кода
- (значок часов): Ожидается одобрение владельца кода.
На следующем рисунке показаны значки состояния, применяемые к файлам при внесении изменений:
![]()
Рисунок 2. Пример файлов со значками, отображающими одобрение владельца кода.
Устраните замечание и загрузите заменяющее изменение.
Если рецензент запросит внесение изменений в ваше обновление, вы можете изменить свой коммит в Git, что приведет к созданию нового набора исправлений для того же изменения.
Чтобы учесть ваши замечания и внести изменения:
Выполните шаги 2-4 в разделе «Внесите и протестируйте изменения» .
Выполните следующие команды, чтобы внести изменения:
git add -A git commit --amend
После загрузки исправленного изменения оно заменит оригинал как в Gerrit, так и в вашей локальной истории Git.
Устранить конфликты синхронизации
Если в исходный код будут внесены другие изменения, противоречащие вашим, вы получите сообщение о наличии конфликтов. Для разрешения конфликтов:
Убедитесь, что вы работаете с самой актуальной версией кода:
repo sync .Команда
repo syncполучает обновления с исходного сервера, а затем пытается автоматически перебазировать вашHEADна новый удаленныйHEAD.Если автоматическая перебазировка не удалась, выполните перебазировку вручную:
repo rebase .Разрешение конфликтов слияния. Если у вас нет предпочтительного метода разрешения конфликтов слияния, вы можете использовать
git mergetoolдля ручного исправления конфликтов между файлами.После успешного устранения конфликтующих файлов выполните эту команду, чтобы применить новые коммиты:
git rebase --continue
Отправить изменения
После того, как отправленный код пройдет проверку и подтверждение, его владелец отправляет его от вашего имени либо в ветку, где было проведено рассмотрение изменения, либо во внутреннюю ветку.
После того, как ваша заявка будет объединена, вы можете посетить панель управления непрерывной интеграцией Android , чтобы отслеживать, когда ваши заявки будут интегрированы в дерево репозитория.