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

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

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

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

Цели

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

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

Предпосылки

Перечень требований к этой codelab являются производными от тех , для общей платформы ( 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 -j8
    

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

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

Создайте код

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

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

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

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

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

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Построить код из любого места в кассе с:

    m
    

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

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

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

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

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

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

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

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

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

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

adb logcat

Изменить

Обновление исходного кода этого примера следующий список изменений .

  1. От корня вашей проверки ( aosp/ каталог), перейдите к frameworks/native проекта Git:

    cd frameworks/native
    
  2. Запустите временный проект с помощью этой команды:

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

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Найдите эти две строки:

    postFrame();
    postComposition();
    
  5. Замените эти две строки следующим:

    postFrame();
    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();
    
  6. Соберите код:

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Если вам будет предложено выбрать устройство, выберите то, которое показывает наименьшее затраченное время. (Это, вероятно , последняя в списке вы видите.) Для того, чтобы увидеть все экземпляры виртуальных устройств, используйте acloud list и acloud list -v команду.

Убедитесь, что вы видите изменение цвета на выбранном устройстве, подобное тому, что показано на экране 1.

Example of a successful color change

Рисунок 1. Внешний вид экрана после успешного изменения цвета

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

В этой части кодовой лаборатории используется пример теста, который находится в дереве исходных текстов и дает сбой. Это работает 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. Смотрите хранилище AOSP для полного списка проектов Git и отдельных проектов (пути) для отраслей , связанных с каждым проектом.

Для просмотра кода ваших проектов в 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 в Геррит.

Затем отказаться от связанного временного отделения в 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 .

На этом все готово! Хорошая работа!

Получить помощь

Если вы столкнулись с ошибками при этом codelab, пожалуйста , сообщите о них с помощью Issue Tracker ссылки в нижней части любой страницы. Отправить вопросы на Android-строительной группы.