Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

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

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

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

цели

Миссия этой кодовой метки двойная:

  1. Эта кодовая метка даст вам небольшой вкус того, на что похож рабочий процесс разработчика для инженеров Android, работающих на платформе (операционной системе).
  2. Эта кодовая метка является принудительной функцией для предоставления отзывов об инструментах 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. Выберите устройство Cuttlefish.

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

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

 adb logcat
 

Изменить

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

  1. В корне вашей aosp/ ( aosp/ ) перейдите к проекту Git frameworks/native :

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

Вы будете использовать веб-систему обзора кода 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 и объединяете его с хранилищем.

Вместо этого, для целей кодовой метки, верните список изменений, щелкнув Отменить в Gerrit.

Затем оставьте связанную временную ветвь в каталоге frameworks / native-проекта (или его подпрограммах):

 repo abandon codelab .
 

Не забудьте также отменить изменения в тестовом файле. Так как мы не repo start git commit , не выполняли git commit и не repo upload изменений, мы можем просто сбросить сам файл, например, так (при условии, что вы находитесь в aosp/platform_testing directory ):

 git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
 

На данный момент, вы сделали! Хорошая работа!

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

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