Виртуальное устройство Android как платформа для разработки

Для использования виртуальных устройств Android (AVD) эмулятор Android поддерживает графический интерфейс пользователя (GUI) и интерфейс командной строки (CLI). Вы выбираете оптимальный рабочий процесс для своей среды.

Запустите AOSP Car AVD, используя готовые

Чтобы быстро запустить и протестировать с помощью готового AOSP Car AVD, используйте сценарий с открытым исходным кодом, чтобы загрузить и запустить сборку эмулятора с ci.android.com . Скрипт протестирован на MacOS и Linux.

Для использования этого скрипта вам понадобится Curl .

Чтобы запустить скрипт:

  1. Скопируйте содержимое сценария launch_emu.sh в свой локальный файл, предполагая, что вы используете launch_emu.sh в качестве имени локального файла.
  2. Сделайте свой локальный скрипт исполняемым. Например, запустите chmod +x ./launch_emu.sh .
  3. Проверьте доступные параметры, запустив сценарий с помощью ./launch_emu.sh -h .
  4. На ci.android.com перейдите в ветку aosp-main-throttled и выберите недавнюю сборку, в которой sdk_car_x86_64 имеет зеленый цвет. Например, 11370359. Если вы не видите информацию о сборке, выйдите из своей учетной записи Google и повторите попытку.
  5. Загрузите и установите двоичные файлы, относящиеся к эмулятору, с идентификатором сборки. Например, ./launch_emu.sh -i -a 11370359 .
  6. После этого вы можете использовать ./launch_emu.sh для запуска загруженного и установленного эмулятора (не используйте параметры -i или -a ).
  7. Чтобы загрузить и установить другой идентификатор сборки, запустите ./launch_emu.sh -c чтобы очистить рабочее пространство, а затем повторите шаги 4 и 5, описанные выше.

Чтобы указать параметры запуска командной строки эмулятора Android при запуске эмулятора, используйте параметр -v . Например:

  ./launch_emu.sh -v “-cores 4 -memory 6144 -no-snapshot"

Создайте автомобильный AVD AOSP.

Процесс создания автомобильного AVD AOSP аналогичен созданию образов AVD для телефона (например, aosp_car_x86_64):

  1. Чтобы настроить среду разработки и определить ветку, см. Инструменты управления версиями . Затем просмотрите Загрузка исходного кода :
    ANDROID_BRANCH="android12L-release"
    REPO_URL="https://android.googlesource.com/platform/manifest"
    mkdir $ANDROID_BRANCH && cd $ANDROID_BRANCH && repo init -u $REPO_URL -b $ANDROID_BRANCH --partial-clone && repo sync -c -j8
  2. Создайте образ AVD:
    . build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
  3. Запустите образ AVD (при необходимости добавьте дополнительные параметры запуска из командной строки ):
    emulator &

    Например:

    Рис. 1. Экран виртуального эмулятора Android.

    Примечания об этом процессе:

    • Поскольку процесс сборки такой же, как и при сборке Android для физического устройства, подождите некоторое время, чтобы загрузить исходный код, а затем собрать его.
    • Чтобы работать с другими ветвями, установите $ANDROID_BRANCH в другую ветку/тег .
    • Образы AVD, такие как system.img , создаются в $ANDROID_PRODUCT_OUT . Дополнительную информацию о ключевых образах см. в системном каталоге AVD .
    • См. файл README , чтобы узнать, как предварительно созданные двоичные файлы эмулятора в дереве Android используются для запуска эмулятора.

Создать автомобильный AVD

Добавление нового автомобильного AVD практически идентично добавлению нового устройства . Например, 1660554 создает новый AVD avd_car .

Чтобы создать автомобильный AVD:

  1. При необходимости создайте компанию и папку устройства. В этом примере используется $ANDROID_BUILD_TOP/device/google_car/avd_car .
  2. Создайте make-файл продукта avd_car.mk , который определяет способ сборки AVD.
  3. Создайте папку устройства avd_car_device , в которой будут храниться BoardConfig.mk и source.properties .
  4. Добавьте новый makefile и новый вариант lunch в AndroidProducts.mk .
  5. Чтобы собрать и запустить новый AVD avd_car :
    . build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
Теперь вы готовы создать прототип большинства функций HMI и приложений на своем новом AVD.

Упакуйте ZIP-файл образа AVD.

Вы можете упаковать свой AVD и поделиться им с другими или использовать его на другом компьютере. Используйте emu_img_zip.mk для создания zip-файла образа AVD:

  1. После сборки AVD сделайте emu_img_zip целью:
    m emu_img_zip
  2. ZIP-файл образа AVD с префиксом sdk-repo-linux-system-images создается в папке с именем $ANDROID_PRODUCT_OUT .

Сборка ядра AVD

Ядра AVD похожи на другие ядра Android тем, что все они представляют собой предварительно созданные образы. Обычно вы можете использовать стандартные предварительно созданные образы ядра золотой рыбки, которые есть в каждой версии Android.

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

  1. Выполните следующую серию инструкций:
    mkdir goldfish-kernel-54
    cd goldfish-kernel-54
    repo init -u https://android.googlesource.com/kernel/manifest -b
    common-android11-5.4
    repo sync
    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
    BUILD_CONFIG=common-modules/virtual-device/build.config.goldfish.x86_64
    build/build.sh
    ls -l ./out/android11-5.4/dist/
    
  2. Замените двоичный файл ядра в базе кода в соответствии с make-файлом AVD. Например, x86_64-vendor.mk включает x86_64-kernel.mk .

Код ядра и конфигурация расположены следующим образом:

Элемент Ценить
Ветвь common-android11-5.4 (используется в Android 11)
Манифест kernel/manifest/common-android11-5.4
общие модули/виртуальное устройство kernel/common-modules/virtual-device/android11-5.4
Ядро kernel/common/android11-5.4

Создать новый профиль устройства

Чтобы предоставить пользователям возможность создавать определенный AVD в Android Studio AVD Manager, см. раздел Создание виртуальных устройств и управление ими . Производители устройств могут определять свои собственные характеристики оборудования, например размер экрана и разрешение, используя файл devices.xml , включенный в образ AVD.

  • Например, см. профили автомобильных устройств в automotive.xml .
  • При разработке HMI или прототипировании в файл для одного образа AVD можно добавить несколько устройств.
  • Включите этот файл в ZIP-файл образа OEM AVD в папке [ABI] . Например, как x86_64 .
  • Производители устройств также могут создать скин-эмулятор . Например, чтобы определить дополнительные аппаратные кнопки для более высокого качества пользовательского интерфейса. Это полезно не только для рабочих процессов разработчиков, но и для других задач, таких как исследование и проверка UX.

Создайте XML-файл образа AVD.

Производители устройств могут создать XML-файл изображения AVD для Android Studio, чтобы загрузить его.

  • Например, см. XML-файл образа AVD AAOS, sys-img2-1.xml .
  • Производители устройств могут определить собственное лицензионное соглашение OEM AVD для своих целевых пользователей (используя систему чести) с лицензией для эмулятора Android. Android Studio получает согласие пользователей при включении такой лицензии.

Чтобы создать изображение:

  1. Подготовьте zip-файл образа AVD.
  2. Разархивируйте ${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip .
  3. Добавьте devices.xml в папку x86_64 , а затем сожмите его в ZIP-архив. Например, как oem_avd_img_x86_64.zip .
  4. Обновите oem-sys-img2-1.xml .
  5. Обновите имя, размер и шасум zip-файла (примеры XML-файлов представлены в tools ).

Например, о том, как разместить AVD в Google Cloud Storage , см. в разделе Создание сегментов хранилища .

Чтобы загрузить и сделать AVD общедоступным, см. раздел Публикация данных :

BUCKET_NAME="aaos-avd"
gsutil mb gs://$BUCKET_NAME
gsutil cp oem_avd_img_x86_64.zip gs://$BUCKET_NAME
gsutil cp oem-sys-img2-1.xml gs://$BUCKET_NAME
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

Формат URL-адреса надстройки AVD Image SDK следующий: https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml . Например, если BUCKET_NAME — aaos-avd, URL-адрес: https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml .

Совместное использование образа AVD с пользователями Android Studio

Чтобы ваши пользователи могли загружать изображения AVD и использовать AVD от Android Studio, вы можете предоставить дополнительный XML-файл SDK. Подробности см. в разделе Обновление инструментов IDE и SDK .

Чтобы загрузить AVD из сети:

  1. Разместите ZIP-файл изображения и XML-файлы на сервере.
  2. Предоставьте URL-адрес целевым пользователям.
  3. ( Необязательно ) Ограничьте доступ по имени пользователя и паролю.

Альтернативно, чтобы ускорить разработку, загрузите AVD в локальный каталог:

  1. Сохраните файлы XML и все артефакты, указанные в файле XML, в папку (например, все zip-файлы изображений AVD) с именем ADDON_DIR .
  2. Укажите URL-адрес в виде file://$ADDON_DIR/oem-sys-img2-1.xml .
,

Для использования виртуальных устройств Android (AVD) эмулятор Android поддерживает графический интерфейс пользователя (GUI) и интерфейс командной строки (CLI). Вы выбираете оптимальный рабочий процесс для своей среды.

Запустите AOSP Car AVD, используя готовые

Чтобы быстро запустить и протестировать с помощью готового AOSP Car AVD, используйте сценарий с открытым исходным кодом, чтобы загрузить и запустить сборку эмулятора с ci.android.com . Скрипт протестирован на MacOS и Linux.

Для использования этого скрипта вам понадобится Curl .

Чтобы запустить скрипт:

  1. Скопируйте содержимое сценария launch_emu.sh в свой локальный файл, предполагая, что вы используете launch_emu.sh в качестве имени локального файла.
  2. Сделайте свой локальный скрипт исполняемым. Например, запустите chmod +x ./launch_emu.sh .
  3. Проверьте доступные параметры, запустив сценарий с помощью ./launch_emu.sh -h .
  4. На ci.android.com перейдите в ветку aosp-main-throttled и выберите недавнюю сборку, в которой sdk_car_x86_64 имеет зеленый цвет. Например, 11370359. Если вы не видите информацию о сборке, выйдите из своей учетной записи Google и повторите попытку.
  5. Загрузите и установите двоичные файлы, относящиеся к эмулятору, с идентификатором сборки. Например, ./launch_emu.sh -i -a 11370359 .
  6. После этого вы можете использовать ./launch_emu.sh для запуска загруженного и установленного эмулятора (не используйте параметры -i или -a ).
  7. Чтобы загрузить и установить другой идентификатор сборки, запустите ./launch_emu.sh -c чтобы очистить рабочее пространство, а затем повторите шаги 4 и 5, описанные выше.

Чтобы указать параметры запуска командной строки эмулятора Android при запуске эмулятора, используйте параметр -v . Например:

  ./launch_emu.sh -v “-cores 4 -memory 6144 -no-snapshot"

Создайте автомобильный AVD AOSP.

Процесс создания автомобильного AVD AOSP аналогичен созданию образов AVD для телефона (например, aosp_car_x86_64):

  1. Чтобы настроить среду разработки и определить ветку, см. Инструменты управления версиями . Затем просмотрите Загрузка исходного кода :
    ANDROID_BRANCH="android12L-release"
    REPO_URL="https://android.googlesource.com/platform/manifest"
    mkdir $ANDROID_BRANCH && cd $ANDROID_BRANCH && repo init -u $REPO_URL -b $ANDROID_BRANCH --partial-clone && repo sync -c -j8
  2. Создайте образ AVD:
    . build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
  3. Запустите образ AVD (при необходимости добавьте дополнительные параметры запуска из командной строки ):
    emulator &

    Например:

    Рис. 1. Экран виртуального эмулятора Android.

    Примечания об этом процессе:

    • Поскольку процесс сборки такой же, как и при сборке Android для физического устройства, подождите некоторое время, чтобы загрузить исходный код, а затем собрать его.
    • Чтобы работать с другими ветвями, установите $ANDROID_BRANCH в другую ветку/тег .
    • Образы AVD, такие как system.img , создаются в $ANDROID_PRODUCT_OUT . Дополнительную информацию о ключевых образах см. в системном каталоге AVD .
    • См. файл README , чтобы узнать, как предварительно созданные двоичные файлы эмулятора в дереве Android используются для запуска эмулятора.

Создать автомобильный AVD

Добавление нового автомобильного AVD практически идентично добавлению нового устройства . Например, 1660554 создает новый AVD avd_car .

Чтобы создать автомобильный AVD:

  1. При необходимости создайте компанию и папку устройства. В этом примере используется $ANDROID_BUILD_TOP/device/google_car/avd_car .
  2. Создайте make-файл продукта avd_car.mk , который определяет способ сборки AVD.
  3. Создайте папку устройства avd_car_device , в которой будут храниться BoardConfig.mk и source.properties .
  4. Добавьте новый makefile и новый вариант lunch в AndroidProducts.mk .
  5. Чтобы собрать и запустить новый AVD avd_car :
    . build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
Теперь вы готовы создать прототип большинства функций HMI и приложений на своем новом AVD.

Упакуйте ZIP-файл образа AVD.

Вы можете упаковать свой AVD и поделиться им с другими или использовать его на другом компьютере. Используйте emu_img_zip.mk для создания zip-файла образа AVD:

  1. После сборки AVD сделайте emu_img_zip целью:
    m emu_img_zip
  2. ZIP-файл образа AVD с префиксом sdk-repo-linux-system-images создается в папке с именем $ANDROID_PRODUCT_OUT .

Сборка ядра AVD

Ядра AVD похожи на другие ядра Android тем, что все они представляют собой предварительно созданные образы. Обычно вы можете использовать стандартные предварительно созданные образы ядра золотой рыбки, которые есть в каждой версии Android.

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

  1. Выполните следующую серию инструкций:
    mkdir goldfish-kernel-54
    cd goldfish-kernel-54
    repo init -u https://android.googlesource.com/kernel/manifest -b
    common-android11-5.4
    repo sync
    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
    BUILD_CONFIG=common-modules/virtual-device/build.config.goldfish.x86_64
    build/build.sh
    ls -l ./out/android11-5.4/dist/
    
  2. Замените двоичный файл ядра в базе кода в соответствии с make-файлом AVD. Например, x86_64-vendor.mk включает x86_64-kernel.mk .

Код ядра и конфигурация расположены следующим образом:

Элемент Ценить
Ветвь common-android11-5.4 (используется в Android 11)
Манифест kernel/manifest/common-android11-5.4
общие модули/виртуальное устройство kernel/common-modules/virtual-device/android11-5.4
Ядро kernel/common/android11-5.4

Создать новый профиль устройства

Чтобы предоставить пользователям возможность создавать определенный AVD в Android Studio AVD Manager, см. раздел Создание виртуальных устройств и управление ими . Производители устройств могут определять свои собственные характеристики оборудования, например размер экрана и разрешение, используя файл devices.xml , включенный в образ AVD.

  • Например, см. профили автомобильных устройств в automotive.xml .
  • При разработке HMI или прототипировании в файл для одного образа AVD можно добавить несколько устройств.
  • Включите этот файл в ZIP-файл образа OEM AVD в папке [ABI] . Например, как x86_64 .
  • Производители устройств также могут создать скин-эмулятор . Например, чтобы определить дополнительные аппаратные кнопки для более высокого качества пользовательского интерфейса. Это полезно не только для рабочих процессов разработчиков, но и для других задач, таких как исследование и проверка UX.

Создайте XML-файл образа AVD.

Производители устройств могут создать XML-файл изображения AVD для Android Studio, чтобы загрузить его.

  • Например, см. XML-файл образа AVD AAOS, sys-img2-1.xml .
  • Производители устройств могут определить собственное лицензионное соглашение OEM AVD для своих целевых пользователей (используя систему чести) с лицензией для эмулятора Android. Android Studio получает согласие пользователей при включении такой лицензии.

Чтобы создать изображение:

  1. Подготовьте zip-файл образа AVD.
  2. Разархивируйте ${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip .
  3. Добавьте devices.xml в папку x86_64 , а затем сожмите его в ZIP-архив. Например, как oem_avd_img_x86_64.zip .
  4. Обновите oem-sys-img2-1.xml .
  5. Обновите имя, размер и шасум zip-файла (примеры XML-файлов представлены в tools ).

Например, о том, как разместить AVD в Google Cloud Storage , см. в разделе Создание сегментов хранилища .

Чтобы загрузить и сделать AVD общедоступным, см. раздел Публикация данных :

BUCKET_NAME="aaos-avd"
gsutil mb gs://$BUCKET_NAME
gsutil cp oem_avd_img_x86_64.zip gs://$BUCKET_NAME
gsutil cp oem-sys-img2-1.xml gs://$BUCKET_NAME
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

Формат URL-адреса надстройки AVD Image SDK следующий: https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml . Например, если BUCKET_NAME — aaos-avd, URL-адрес: https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml .

Совместное использование образа AVD с пользователями Android Studio

Чтобы ваши пользователи могли загружать изображения AVD и использовать AVD от Android Studio, вы можете предоставить дополнительный XML-файл SDK. Подробности см. в разделе Обновление инструментов IDE и SDK .

Чтобы загрузить AVD из сети:

  1. Разместите ZIP-файл изображения и XML-файлы на сервере.
  2. Предоставьте URL-адрес целевым пользователям.
  3. ( Необязательно ) Ограничьте доступ по имени пользователя и паролю.

Альтернативно, чтобы ускорить разработку, загрузите AVD в локальный каталог:

  1. Сохраните файлы XML и все артефакты, указанные в файле XML, в папку (например, все zip-файлы изображений AVD) с именем ADDON_DIR .
  2. Укажите URL-адрес в виде file://$ADDON_DIR/oem-sys-img2-1.xml .