Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

Разработчик Android Codelab

Вы можете помочь в разработке самой широко устанавливаемой операционной системы в истории Земли. Да, вы здесь для того, чтобы стать разработчиком платформы Android.

Несмотря на непростой путь, мы, команда Android, стремимся упростить вам путешествие с каждым выпуском. И мы вносим улучшения каждый день, напрямую работая в Android Open Source Project (AOSP).

Так что расслабьтесь, запустите терминал и давайте творим историю.

Цели

Миссия этой кодовой лаборатории двояка:

  1. Эта лаборатория кода даст вам небольшое представление о том, на что похож рабочий процесс разработчика для инженеров Android, работающих над платформой (операционной системой).
  2. Эта codelab - это функция, заставляющая вас оставлять отзывы об инструментах Android, документации и рабочем процессе разработчика при запуске с нуля.

Предпосылки

Вот полный список требований для этой кодовой таблицы, взятых из требований для разработки общей платформы ( AOSP ).

Чтобы воспользоваться этой кодовой лабораторией, вам необходимо настроить:

Окружающая среда

Обычно пользователи создают и развивают непосредственно на рабочей станции. Поскольку вы можете работать в разных терминалах, а многие из используемых команд зависят от терминала, вам нужно будет повторно запускать их в каждом сеансе терминала. В частности, к ним относятся команды source build/envsetup.sh и lunch .

Настроить рабочую станцию

  1. Установите необходимые пакеты на рабочую станцию.
  2. Находясь в терминале, установите Repo и получите учетные данные для всех репозиториев Git.

Инициализировать и синхронизировать код

  1. Перейдите в свой домашний каталог:

    cd ~
    
  2. Создайте в нем локальный рабочий подкаталог:

    mkdir aosp
    
  3. Перейдите в каталог:

    cd aosp
    
  4. Инициализируйте главную ветку исходного кода репозитория AOSP (по умолчанию):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Введите или примите свои учетные данные Git (имя, адрес электронной почты).

  6. Синхронизируйте исходный код:

    repo sync -j16
    

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

Каждая проверка репо представлена файлом манифеста . У вас может быть несколько проверок репо одновременно, если они существуют в разных каталогах. Но обратите внимание, что объем каждой проверки и сборки составляет примерно 300 ГБ и продолжает расти, поэтому ограничьтесь двумя или дополните свою систему дополнительным диском.

Совет: Чтобы освободить место, удалите каталог ветки и начните заново с создания каталога:

rm -rf aosp2

Создайте код

Чтобы собрать Android, вы должны выбрать тип целевого устройства для сборки с помощью команды lunch . Цели - это перестановки устройств, например конкретная модель или форм-фактор.

Целевое устройство включено ниже, aosp_cf_x86_phone-userdebug , позволяет строить каракатицу виртуального Android устройства для тестирования без физического устройства.

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

  1. Настройте свою среду для создания устройств Android, выполнив следующую команду из корня проверки исходного кода:

    source build/envsetup.sh
    
  2. Передайте цель сборки команде обеда, например:

    lunch aosp_cf_x86_phone-userdebug
    
  3. Создайте код из любой точки вашей кассы с помощью:

    m
    

Ожидайте, что первая сборка займет часы. Последующие сборки занимают значительно меньше времени.

Создать экземпляр Acloud

Acloud - это инструмент командной строки в AOSP, который помогает пользователям создавать виртуальные устройства Android, в данном случае Cuttlefish.

Если вы находитесь в том же сеансе терминала, который использовался для создания кода , продолжайте. В противном случае повторно запустите сценарий envsetup.sh и ту же команду обеда, которая использовалась раньше. Затем:

  1. Создайте локальный экземпляр Acloud с помощью:

    acloud create --local-image --local-instance
    
  2. Принять обновления необходимых пакетов.

  3. При появлении запроса перезагрузите рабочую станцию, чтобы все изменения вступили в силу.

  4. Выберите устройство "Каракатица".

Вас должен приветствовать сеанс VNC, содержащий устройство Android!

Вы можете взаимодействовать с виртуальным устройством на своей рабочей станции с помощью мыши и клавиатуры. Вы также можете следить за действиями в журналах, когда используете свое устройство, с logcat команды logcat Android Debug Bridge (adb):

adb logcat

Изменить

Обновите исходный код, следуя этому примеру списка изменений .

  1. Из корня оформления aosp/ ( aosp/ ) перейдите в проект frameworks/native Git:

    cd frameworks/native
    
  2. Начните временный проект с:

    repo start <some-name> .
    
  3. Отредактируйте SurfaceFlinger.cpp чтобы включить обновления из списка изменений в следующем месте:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Соберите код:

    m
    
  5. Обновите сборку на устройстве:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

Вы должны увидеть изменение цвета на устройстве.

Протестируйте свой код

В этой части лабораторной работы мы рассмотрим пример теста, который находится в дереве исходных текстов и уже дает сбой. Чтобы запустить тест локально, мы будем использовать Atest для тестирования кода.

Чтобы использовать тест:

  1. Бегать:

    atest DevCodelabTest
    
  2. Тест не пройдёт; теперь давайте исправим! Найдите исходный код неудачного теста:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Тогда загляните внутрь:

    platform_testing/tests/example/devcodelab
    
  4. Чтобы отредактировать файл, возьмите имя теста и замените расширение . с / , вот так:

    android.test.example.devcodelab.DevCodelabTest
    

    Становится:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Таким образом отредактируйте:

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    Заменить:

    Assert.assertTrue(false)
    

    С участием:

    Assert.assertTrue(true)
    
  6. Запустите тест еще раз, чтобы убедиться, что вы исправили тест:

    atest DevCodelabTest
    

Загрузите свой код для проверки

Repo упрощает использование Git за счет объединения таких команд, как git clone для одновременной работы с многочисленными репозиториями (или проектами) Git.

См. В разделе « Инструменты управления исходным кодом» обзоры Git и Repo со ссылками на полную документацию по работе с исходным кодом Android. Полный список проектов Git и отдельные проекты (пути) для веток, связанных с каждым проектом, см. В репозитории AOSP .

Вы будете использовать веб-систему проверки кода Gerrit для проектов в Git.

  1. Предполагая, что вы внесли изменения в проект frameworks/native , выполните следующие команды, чтобы загрузить их:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Для сообщения фиксации введите:

    Android codelab change
    Test: manual atest
    
  3. Загрузите свое изменение:

    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 .