На этой странице описано, как запустить эмулятор AAOS как веб-службу и запустить его в веб-браузере, чтобы сделать его удаленно доступным для пользователей. Это обеспечивает сквозную, минимально жизнеспособную ссылку через Google Cloud Compute Engine . Тем не менее, вы можете использовать эту услугу на любой публичной или частной облачной платформе по вашему выбору.
Цель
Эта централизованная конфигурация и настройка делают эмулятор AAOS доступным для всей компании, поставщика и разработчиков, работающих на дому. Это повышает эффективность управления и обновления эмулятора AAOS до новых версий, а также сокращает время, необходимое для настройки и управления локальными компьютерами для отдельных пользователей. Это решение оптимизирует использование аппаратных ресурсов и обеспечивает более низкую стоимость среды разработки приложений. Например, в целях:
- Исследования пользователей, обзор пользовательского опыта, поддержка клиентов и обучение.
- Демонстрации потенциальным клиентам и в каналах продаж.
- Тестируйте, проверяйте и даже отлаживайте приложения (включая ежедневные сборки OEM-HMI) в любом масштабе. Считайте, что эмулятор заменяет тестовые стенды, используемые для разработки приложений.
- Агенты колл-центра OEM-клиентов имеют единый и удобный пользовательский интерфейс HU.
Преимущества использования эмулятора AAOS многочисленны:
- Используйте сценарий установки, чтобы создать индивидуальный облачный эмулятор AAOS (облачный эмулятор).
- Создайте индивидуальный образ облачного эмулятора AAOS для экземпляров виртуальных машин:
- Готовая настройка облачного эмулятора.
- Публичные образы AVD AAOS, доступные создателю службы для запуска AVD AAOS с помощью команды. Например, общедоступные OEM-образы AVD в качестве образцов для адаптации и применения партнерами.
Архитектура
Архитектура примера облачного эмулятора показана ниже. Ваш первый минимально жизнеспособный сервис будет работать путем добавления собственных OEM-образов AVD.
Рисунок 1. Архитектура Cloud AVD.
Ключевые строительные блоки эмулятора:
Элемент | Цель |
---|---|
Android-эмулятор | Экземпляр эмулятора содержит образы AVD. |
Мост Золотая рыбка-webrtc | Приложение Linux для обеспечения связи между приложением реагирования и эмулятором AAOS. |
Android-эмулятор-webrtc | Приложение React для отображения пользовательского интерфейса эмулятора в веб-браузере. React также фиксирует события пользовательского ввода и отправляет их обратно на сервер. |
Скрипты контейнера эмулятора Android | Скрипты Python для управления и создания образов и контейнеров Docker для вышеуказанных программных модулей. |
Создает токены для управления разрешениями доступа эмулятора. | |
Включить сервер | Устанавливает прямое соединение WebRTC между клиентом и сервером. Сервер Turn требуется только в том случае, если служба эмулятора работает за брандмауэрами или прокси-серверами. |
посланник | Прокси-сервис для:
|
Настройка эмулятора на облачной виртуальной машине
Чтобы создать проект GCP:
- Перейдите в Google Cloud Console и выберите проект .
- Чтобы убедиться, что для вашего проекта Google Cloud включена оплата, см. раздел Включение, отключение или изменение оплаты для проекта .
- Включите API .
Создайте виртуальную машину Linux в GCE
1. Включите вложенную виртуализацию.
По умолчанию вложенная виртуализация разрешена на уровне проекта, папки или организации. Если кто-то в вашей организации не отключил вложенную виртуализацию , вам не нужно ничего делать, чтобы включить ее.
- Используйте инструмент командной строки gcloud , чтобы убедиться, что вложенная виртуализация разрешена:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Создайте загрузочный диск Ubuntu-1804-lts.
- Перейдите в облачную консоль .
- Выберите проект GCP.
- Перейдите в меню «Навигация» и выберите «Compute Engine» > «Диски» > «Создать диск» .
- Укажите имя диска. Например,
ubuntu1804lts
- Выберите регион и зону. Для поддержки вложенной виртуализации убедитесь, что выбранный вами регион и зона поддерживают процессоры Haswell (или более поздние версии). Дополнительную информацию см. в разделе «Регионы и зоны» .
- Выберите исходный образ
ubuntu-1804-bionic-v20210211
- Установите соответствующий размер диска (рекомендуется 100 ГБ или больше).
- Укажите имя диска. Например,
Рисунок 2. Создайте загрузочный диск Ubuntu.
3. Создайте собственный образ со специальным лицензионным ключом для включения VMX.
- Перейдите в облачную консоль .
- Откройте Cloud Shell и используйте следующую команду:
gcloud compute images create [IMAGE NAME] --source-disk-zone [DISK ZONE] --source-disk [DISK NAME] \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
- Введите имя изображения. Например,
aaos-emulator-image
- В качестве зоны диска укажите зону, в которой вы создали диск.
- В качестве имени диска задайте имя, которое вы использовали для создания диска.
Например:
gcloud compute images create aaos-emulator-image --source-disk-zone us-central1-a \ --source-disk ubuntu1804lts \ --licenses \ "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
- Введите имя изображения. Например,
Дополнительные сведения см. в разделе «Экземпляр вложенной виртуальной машины виртуализации» .
4. Создайте экземпляр виртуальной машины, используя настроенный образ.
- Перейдите в облачную консоль .
- Выберите проект GCP.
- Перейдите в Меню навигации > Compute Engine > Экземпляр виртуальной машины.
Рисунок 3. Создайте экземпляр виртуальной машины.
- Введите имя экземпляра. Например,
aaosemulator
- Выберите желаемое семейство и тип машины. Убедитесь, что на компьютере имеется четыре виртуальных ЦП и 16 ГБ памяти (или больше).
- Выберите платформу ЦП: Intel Cascade Lake (или более позднюю версию).
- Замените загрузочный диск на образ, созданный на предыдущем шаге.
- Включите брандмауэр для:
- Разрешить HTTP-трафик
- Разрешить HTTPS-трафик
5. Настройте брандмауэр на открытие портов 80 и 443.
- Перейдите в облачную консоль .
- выберите проект GCP.
- Откройте «Меню навигации» > «Compute Engine» > «Экземпляр виртуальной машины» > «Настроить правило брандмауэра».
Установите необходимое программное обеспечение на виртуальную машину.
- Установите Python 3 и Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Установите Android SDK и ADB, доступные по пути.
sudo apt install android-sdk
Чтобы установить Docker и Docker-compose, см. Docker и Docker-compose . Убедитесь, что вы можете запустить их от имени пользователя без полномочий root .
- Чтобы подтвердить, что ЦП поддерживает аппаратную виртуализацию (результат команды должен быть ненулевым числом):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Установите виртуальную машину ядра (KVM). Чтобы установить KVM, запустите:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Чтобы убедиться, что KVM работает:
Результат должен быть:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Чтобы установить Node.js и Node Packet Manager (NPM):
sudo apt install nodejs npm
Запустите размещенные контейнеры
- Чтобы проверить установку, запустите размещенные контейнеры эмулятора Android из общедоступного репозитория. Подробную информацию о контейнерах можно найти здесь . Теперь вы можете запускать эти контейнеры, не создавая их. Например:
docker run \ -e ADBKEY="$(cat ~/.android/adbkey)" \ --device /dev/kvm \ --publish 8554:8554/tcp \ --publish 5555:5555/tcp \ us-docker.pkg.dev/android-emulator-268719/images/30-google-x64:30.1.2
Это загрузит контейнер (если он недоступен локально) и запустит его.
- При запуске контейнера подключитесь к устройству, настроив ADB аналогично подключению AVD на локальном хосте. Например:
Результат должен быть:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Настройте службу эмулятора AAOS.
Чтобы настроить службу эмулятора:
- Установите скрипт контейнера Docker эмулятора Android:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Это активирует виртуальную среду и сделает доступным исполняемый файл emu-docker. Чтобы получить подробную информацию о его использовании, запустите его:
emu-docker -h
- Чтобы создать контейнеры Docker, примите лицензионные соглашения.
- Создайте Docker-контейнер эмулятора AAOS.
- Загрузите сборку эмулятора более поздней версии, чем 7154743. Например:
sdk-repo-linux-emulator-7154743.zip
- Загрузите образ системы эмулятора AAOS. Например,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Создайте веб-контейнеры и задайте имя пользователя и пароль для удаленного доступа.
./create_web_container.sh -p user1,passwd1
- Запустите веб-службу эмулятора AAOS:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Вы успешно запустили веб-службу эмулятора AAOS! Используйте следующее для доступа к нему в веб-браузере:
https://<VM_External__IP>
Поиск неисправностей
Если возникает ошибка подключения к внешнему IP-адресу виртуальной машины, убедитесь, что виртуальная машина настроена на разрешение трафика HTTP и HTTPS. Чтобы убедиться в этом, см. Запуск базового веб-сервера Apache .
Настройка сервера поворотов
Вы всегда можете использовать свой собственный сервер поворотов. Ниже приведен пример экземпляра виртуальной машины Google Cloud.
Примечание. Чтобы сервер Turn работал на экземпляре виртуальной машины Google Cloud, обязательно настройте правило брандмауэра виртуальной машины, разрешающее трафик через порты TCP и UDP 3478 и 3479.
- Установите котурн-сервер:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Измените
/etc/turnserver.conf
добавив следующие строки:lt-cred-mech #set your realm name realm=test #coturn username and password user=test:test123 # external-ip=<VM-Public-IP>/<VM-Private-IP> external-ip=34.193.52.134/10.128.0.2 systemctl start coturn
- Измените YAML-файл Docker Compose, включив в него конфигурацию TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Добавьте следующие две строки среды в раздел эмулятора:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Перезапустите службу эмулятора AAOS с настройкой хода. Обязательно замените IP-адрес сервера Turn, имя пользователя и учетные данные ниже своими собственными:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up