Вы можете помочь в разработке самой широко устанавливаемой операционной системы в истории Земли. Да, вы здесь для того, чтобы стать разработчиком платформы Android.
Несмотря на непростой путь, мы, команда Android, стремимся упростить вам путь с каждым выпуском. И мы вносим улучшения каждый день, напрямую работая в Android Open Source Project (AOSP).
Так что расслабьтесь, запустите терминал и давайте творим историю.
Цели
Миссия этой кодовой лаборатории двояка:
- Эта лаборатория кода даст вам небольшое представление о том, на что похож рабочий процесс разработчиков для инженеров Android, работающих над платформой (операционной системой).
- Эта codelab - это функция, заставляющая вас оставлять отзывы об инструментах Android, документации и рабочем процессе разработчика, когда вы начинаете с нуля.
Предпосылки
Вот полный список требований для этой кодовой таблицы, взятых из требований для разработки общей платформы ( AOSP ).
Чтобы воспользоваться этой кодовой лабораторией, вам необходимо настроить:
- Физическая рабочая станция Linux, отвечающая всем общественным требованиям .
- Репо и конфигурация 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 -j16
Первоначальная синхронизация может занять час или больше. Пока вы ждете, смотрите инструкции по загрузке для получения дополнительных сведений.
Каждая проверка репо представлена файлом манифеста . У вас может быть несколько проверок репо одновременно, если они существуют в разных каталогах. Но обратите внимание, что объем каждой проверки и сборки составляет примерно 300 ГБ и растет, поэтому ограничьтесь двумя или дополните свою систему дополнительным диском.
Совет: Чтобы освободить место, удалите каталог ветки и начните заново с создания каталога:
rm -rf aosp2
Создайте код
Чтобы собрать Android, вы должны выбрать тип целевого устройства для сборки с помощью команды lunch
. Цели - это перестановки устройств, например конкретная модель или форм-фактор.
Целевое устройство включено ниже, aosp_cf_x86_64_phone-userdebug
, позволяет строить каракатицу виртуального Android устройства для тестирования без физического устройства.
Чтобы вместо этого собрать и обновить физическое устройство, выберите другую цель и следуйте инструкциям по прошивке устройств .
Настройте свою среду для создания устройств Android, выполнив следующую команду из корня проверки исходного кода:
source build/envsetup.sh
Передайте цель сборки команде обеда, например:
lunch aosp_cf_x86_64_phone-userdebug
Создайте код из любой точки вашей кассы с помощью:
m
Ожидайте, что первая сборка займет часы. Последующие сборки занимают значительно меньше времени.
Создать экземпляр Acloud
Acloud - это инструмент командной строки в AOSP, который помогает пользователям создавать виртуальные устройства Android, в данном случае Cuttlefish.
Если вы находитесь в том же сеансе терминала, который использовался для создания кода , продолжайте. В противном случае повторно запустите сценарий envsetup.sh
и ту же команду обеда, которая использовалась раньше. Затем:
Создайте локальный экземпляр Acloud с помощью:
acloud create --local-image --local-instance
Принять обновления необходимых пакетов.
При появлении запроса перезагрузите рабочую станцию, чтобы все изменения вступили в силу.
Выберите устройство "Каракатица".
Вас должен приветствовать сеанс VNC, содержащий устройство Android!
Вы можете взаимодействовать с виртуальным устройством на своей рабочей станции с помощью мыши и клавиатуры. Вы также можете следить за действиями в журналах, когда используете свое устройство, с logcat
команды logcat
Android Debug Bridge (adb):
adb logcat
Изменить
Обновите исходный код, следуя этому примеру списка изменений .
Из корня оформления
aosp/
(aosp/
) перейдите в проектframeworks/native
Git:cd frameworks/native
Начните временный проект с:
repo start <some-name> .
Отредактируйте
SurfaceFlinger.cpp
чтобы включить обновления из списка изменений в следующем месте:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Соберите код:
m
Обновите сборку на устройстве:
adb root adb remount adb sync adb reboot acloud reconnect
Вы должны увидеть изменение цвета на устройстве.
Протестируйте свой код
В этой части лабораторной работы мы рассмотрим пример теста, который находится в дереве исходных текстов и уже дает сбой. Чтобы запустить тест локально, мы будем использовать 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. См. В репозитории AOSP полный список проектов Git и отдельные проекты (пути) для веток, связанных с каждым проектом.
Вы будете использовать веб-систему проверки кода Gerrit для проектов в Git.
Предполагая, что вы внесли изменения в проект
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 master:
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/master
Просмотрите свои изменения в Gerrit
Перейдите по ссылке, напечатанной в терминале, похожей на:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Это завершает начальную кодовую лабораторию для разработки платформы Android. См. « Отправка исправлений» для дальнейших шагов и остальную часть этого сайта для получения полной информации о разработке Android.
Отменить изменения
Обычно после тестирования и проверки / утверждения вы отправляете свои изменения в Gerrit и объединяете их в репозиторий.
Вместо этого для целей codelab верните свой список изменений, щелкнув Abandon в Gerrit.
Затем оставьте связанную временную ветвь в каталоге frameworks / native проекта (или его подпрограммах):
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 .