Вы можете помочь разработать самую распространенную операционную систему в истории Земли. Да, вы здесь, чтобы начать путь становления инженером платформы Android.
Хотя путь непрост, команда Android стремится упростить ваш путь с каждым выпуском. И команда каждый день вносит улучшения посредством непосредственной работы в проекте Android Open Source Project (AOSP).
Так что расслабьтесь, включите терминал и давайте творить историю.
Цели
Миссия этой кодовой лаборатории двоякая:
- Чтобы дать вам небольшое представление о том, как выглядит рабочий процесс разработчиков Android, работающих над платформой (операционной системой).
- Поощряйте вас оставлять отзывы об инструментах Android, документации и рабочем процессе разработчиков.
Предварительные условия
Список требований для этой кодовой лаборатории взят из требований для разработки общей платформы ( AOSP ). Чтобы воспользоваться этой лабораторией кода, настройте следующее:
- Физическая рабочая станция Linux, отвечающая всем общедоступным требованиям .
- Repo и конфигурация Git , необходимая для редактирования базы кода Android.
Среда
Обычно пользователи создают и разрабатывают приложения непосредственно на рабочей станции. Поскольку вы можете работать в разных терминалах, а многие из используемых команд зависят от терминала, вам придется запускать их повторно в каждом сеансе терминала. В частности, к ним относятся source build/envsetup.sh
и lunch
.
Настройка рабочей станции
- Установите необходимые пакеты на свою рабочую станцию.
- Продолжая работать в терминале, установите Repo и получите учетные данные для всех репозиториев Git.
Инициализируйте и синхронизируйте код
Перейдите в свой домашний каталог:
cd ~
Создайте в нем локальный рабочий подкаталог:
mkdir aosp
Перейдите в каталог:
cd aosp
Инициализируйте основную ветку исходного кода репозитория AOSP (по умолчанию):
repo init -u https://android.googlesource.com/platform/manifest
Введите или примите свои учетные данные Git (имя, адрес электронной почты).
Синхронизируйте исходный код:
repo sync -j8
Первоначальная синхронизация может занять час или больше.
Каждая проверка репо представлена файлом манифеста . Допустимо иметь более одной проверки репо одновременно, если они существуют в разных каталогах. Но учтите, что каждая проверка и сборка занимают примерно 300 ГБ (и эта цифра растет), поэтому либо ограничьте себя двумя извлечениями репозитория, либо дополните свою систему дополнительным диском.
Создайте код
Чтобы собрать Android, вы должны выбрать тип целевого устройства для сборки с помощью команды lunch
. Целью является вариант устройства, например конкретная модель или форм-фактор.
Указанное ниже целевое устройство aosp_cf_x86_64_phone-userdebug
позволяет вам создать виртуальное Android-устройство Cuttlefish для тестирования без физического устройства.
Вместо этого, чтобы собрать и обновить физическое устройство, выберите другое устройство и следуйте инструкциям по перепрошивке устройств .
Настройте среду для создания устройств Android, выполнив следующую команду из корня извлечения исходного кода:
source build/envsetup.sh
Передайте цель сборки команде обеда, например:
lunch aosp_cf_x86_64_phone-userdebug
Создайте код из любой точки оформления заказа с помощью:
m
Ожидайте, что первая сборка займет несколько часов. Последующие сборки занимают значительно меньше времени.
Создать экземпляр Cloud
Acloud — это инструмент командной строки в AOSP, который помогает пользователям создавать виртуальные устройства Android, в данном случае Cuttlefish.
Если вы находитесь в том же сеансе терминала, который использовался для создания кода , продолжайте. В противном случае повторно запустите сценарий envsetup.sh
и ту же команду lunch
, которую вы использовали в первую очередь. Затем
Установите зависимости для локального запуска виртуального устройства Cuttlefish с помощью:
acloud setup
При появлении запроса перезагрузите рабочую станцию, чтобы все изменения вступили в силу.
Создайте локальный экземпляр
acloud
с помощью:acloud create --local-image --local-instance
Выберите устройство «Каракатица».
Вас должен приветствовать сеанс VNC, содержащий устройство Android!
Вы можете взаимодействовать с виртуальным устройством на своей рабочей станции с помощью мыши и клавиатуры. Вы также можете следить за активностью в журналах во время использования устройства, используя команду logcat
Android Debug Bridge (adb):
adb logcat
Изменить
Обновите исходный код, следуя этому примеру списка изменений .
Из корня вашего оформления заказа (каталог
aosp/
) перейдите к проектуframeworks/native
Git:cd frameworks/native
Запустите временный проект с помощью этой команды:
repo start <some-name> .
Отредактируйте
SurfaceFlinger.cpp
, включив в него обновления из списка изменений в следующем месте:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Найдите эту строку:
postComposition();
Замените эти две строки следующими:
postComposition(); mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f}); updateColorMatrixLocked();
Создайте код:
m
Обновите сборку на устройстве:
adb root
adb remount
adb sync
adb reboot
acloud reconnect
Если вам будет предложено выбрать устройство, выберите то, которое показывает наименьшее прошедшее время. (Вероятно, это последнее в списке, который вы видите.) Чтобы просмотреть все экземпляры виртуальных устройств, используйте команды
acloud list
иacloud list -v
.
Убедитесь, что вы видите изменение цвета на выбранном устройстве, подобное тому, что показано на рисунке 1.
Рисунок 1. Внешний вид экрана после успешного изменения цвета
Проверьте свой код
В этой части лаборатории кода используется пример теста, который находится в дереве исходного кода и не пройден. При этом используется Atest для локального запуска теста и тестирования кода.
Чтобы использовать тест, следуйте этим инструкциям:
Бегать:
atest DevCodelabTest
Тест провалится. Чтобы это исправить, найдите исходный код неудачного теста:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Тогда посмотри сюда
platform_testing/tests/example/devcodelab
Чтобы файл можно было редактировать, возьмите имя теста в
android.test.example.devcodelab.DevCodelabTest
и замените расширение.
с/
, чтобы получить этот результат:src/android/test/example/devcodelab/DevCodelabTest.java
Затем отредактируйте
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
заменить
Assert.assertTrue(false)
с
Assert.assertTrue(true)
Запустите тест еще раз, чтобы убедиться, что вы устранили проблему:
atest DevCodelabTest
Загрузите свой код для проверки
Repo упрощает использование Git, объединяя такие команды, как git clone
, для одновременной работы с многочисленными репозиториями (или проектами) Git.
См. раздел «Инструменты контроля версий» , где представлены обзоры Git и Repo, а также ссылки на полную документацию по работе с исходным кодом Android. Полный список проектов Git и отдельные проекты (пути) для ветвей, связанных с каждым проектом, см. в репозитории AOSP .
Для проверки кода ваших проектов в Git вы будете использовать веб-систему проверки кода Gerrit .
Предполагая, что вы внесли изменения в
frameworks/native
проект, запустите эти команды, чтобы загрузить их:cd frameworks/native
repo start codelab .
git add .
git commit
В качестве сообщения о фиксации введите следующее:
Android codelab change Test: manual atest
Загрузите изменение:
repo upload
В случае успеха вы увидите сообщение, подобное этому:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
Просмотрите изменения в Gerrit
Перейдите по ссылке, напечатанной в терминале, которая похожа на эту:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
На этом стартовая лаборатория разработки кода для платформы Android завершена. Дальнейшие действия см. в разделе «Отправка исправлений» , а полную информацию о разработке Android см. в остальной части этого сайта.
Отменить изменения
Обычно после тестирования, проверки и утверждения вы отправляете изменения в Gerrit и объединяете их в репозиторий.
Вместо этого для целей этой лаборатории кода отмените список изменений, нажав «Отменить» в Gerrit.
Затем закройте связанную временную ветку в каталоге frameworks/native
project (или его подкаталогах):
repo abandon codelab .
Не забудьте также отменить изменения, внесенные в тестовый файл. Поскольку вы не выполнили repo start
, git commit
и repo upload
изменения, вы можете сбросить сам файл. Предполагая, что вы находитесь в aosp/platform_testing directory
, используйте следующую команду для сброса файла:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
На этом этапе все готово! Хорошая работа!
Получить помощь
Если вы столкнулись с ошибками во время выполнения этой лабораторной работы, сообщите о них, используя ссылку «Отслеживание ошибок» внизу любой страницы. Вопросы отправляйте в группу разработчиков Android .