Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Cree su propio emulador de nube

En este artículo se describe cómo ejecutar la AAOS emulador como un servicio web y ejecutarlo en un navegador web para que sea accesible de forma remota a los usuarios. Si lo hace, proporciona una, la referencia mínimamente viable de extremo a extremo a través de la nube de Google Compute Engine . Dicho esto, puede utilizar este servicio en cualquier plataforma de nube pública o privada de su elección.

Propósito

Esta configuración y configuración centralizadas hacen que AAOS Emulator sea accesible para toda una empresa, proveedor y desarrolladores que trabajan desde casa. Hacerlo hace que sea más eficiente administrar y actualizar el emulador AAOS a nuevas versiones y elimina el tiempo necesario para configurar y administrar máquinas locales para usuarios individuales. Esta solución optimiza el uso de los recursos de hardware y permite un entorno de desarrollo de aplicaciones de menor costo. Por ejemplo, para efectos de:

  • Investigación de usuarios, revisión de la experiencia del usuario, atención al cliente y capacitación.
  • Demos a clientes potenciales y en canales de venta.
  • Pruebe, valide e incluso depure aplicaciones (incluidas las compilaciones HMI OEM diarias) a escala. Considere el emulador como un sustituto de los bancos de prueba que se usan para desarrollar aplicaciones.
  • Los agentes del centro de llamadas del cliente OEM tienen una interfaz de usuario de HU uniforme y de fácil acceso.

Los beneficios de usar el emulador AAOS son numerosos:

  • Utilice un script de configuración para crear un emulador de AAOS (emulador de nube) personalizado y basado en la nube.
  • Cree una imagen personalizada de AAOS Cloud Emulator para instancias de VM:
    • Configuración lista de un emulador basado en la nube.
    • Imágenes públicas de AAOS AVD disponibles para el creador del servicio para iniciar un AAOS AVD con un comando. Por ejemplo, imágenes AVD OEM públicas como muestras para que los socios las adapten y apliquen.

Arquitectura

La arquitectura del ejemplo del emulador de nube se ilustra a continuación. Su primer servicio mínimamente viable funcionará agregando sus propias imágenes OEM AVD.

Arquitectura Figura 1. Nube AVD

Los bloques de construcción clave del emulador son:

Articulo Propósito
Emulador de Android La instancia del emulador aloja imágenes AVD
Puente Goldfish-webrtc Aplicación de Linux para proporcionar comunicación entre la aplicación de reacción y el emulador AAOS
android-emulador-webrtc Reaccionar aplicación para visualizar el emulador de interfaz de usuario en un navegador web. React también captura los eventos de entrada del usuario y los envía de vuelta al servidor.
Secuencias de comandos del contenedor del emulador de Android Scripts de Python para administrar y crear imágenes y contenedores de Docker para los módulos de software anteriores.
Servicio JWT (servicio de token web JSON) Genera tokens para gestionar los permisos de acceso del emulador.
Turno servidor Establece una conexión directa WebRTC entre el cliente y el servidor. Turn server es necesario solo cuando el servicio Emulator se ejecuta detrás de firewalls o proxies.
Enviado

Un servicio de proxy para:

  • Proporcione HTTPS utilizando un certificado autofirmado.
  • Redirigir el tráfico en el puerto 80 (http) al puerto 443 (https).
  • Actúa como un proxy gRPC para el emulador.
  • Verifique los tokens para permitir el acceso al extremo de gRPC del emulador.
  • Redirija otras solicitudes al componente Nginx, que aloja una aplicación React.

Configurar el emulador en una máquina virtual en la nube

Para crear un proyecto de GCP:

  1. Ir a Google Cloud Console y seleccionar un proyecto .
  2. Para confirmar que la facturación está habilitada para su proyecto de Google Cloud, consulte activar, desactivar o la facturación cambio para un proyecto .
  3. Habilitar la API .

Crear una máquina virtual Linux en GCE

1. Habilite la virtualización anidada

De forma predeterminada, la virtualización anidada está permitida a nivel de proyecto, carpeta u organización. A menos que alguien en su organización tiene la virtualización anidada con discapacidad , no es necesario hacer nada para activarlo.

  1. Utilice la herramienta de línea de comandos gcloud Para confirmar que se permite anidada virtualización:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Cree un disco de arranque Ubuntu-1804-lts

  1. Ir a la nube de la consola .
  2. Seleccione el proyecto GCP.
  3. Vaya al Menú de navegación > Compute Engine > Discos > Crear disco.
    1. Proporcione un nombre de disco. Por ejemplo, ubuntu1804lts
    2. Seleccione una Región y una Zona. Para admitir la virtualización anidada, asegúrese de que la región y la zona que seleccione sean compatibles con los procesadores Haswell (o posterior). Para obtener más información, véase Regiones y Zonas .
    3. Seleccione la imagen de la fuente de ubuntu-1804-bionic-v20210211
    4. Establezca un tamaño de disco adecuado (se recomiendan 100 GB o más).

Figura 1. Crear disco de arranque de Ubuntu

3. Cree una imagen personalizada con clave de licencia especial para habilitar VMX

  1. Ir a la consola de la nube .
  2. Abra un shell de la nube y utilice el comando siguiente:
    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"
    
    • Introduzca un nombre de imagen. Por ejemplo, aaos-emulator-image
    • Establezca Disk Zone en la zona en la que creó el disco.
    • Establezca el nombre del disco con el nombre que usó para crear el disco.

    Por ejemplo:

    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"
    

Para más detalles, véase anidada virtualización VM Instancia .

4. Crea una instancia de VM usando la imagen personalizada

  1. Ir a la nube de la consola .
  2. Seleccione el proyecto GCP.
  3. Vaya a Menú de navegación > Compute Engine > Instancia de VM.

    Figura 1. Crear una instancia de VM

  4. Introduzca un nombre de instancia. Por ejemplo, aaosemulator
  5. Seleccione la familia y el tipo de máquina deseados. Asegúrese de que la máquina contenga cuatro vCPU y 16 GB de memoria (o más).
  6. Seleccione la plataforma de CPU para que sea Intel Cascade Lake (o posterior).
  7. Cambie el disco de arranque a la imagen creada en el paso anterior.
  8. Habilitar el cortafuegos para:
    • Permitir tráfico HTTP
    • Permitir tráfico HTTPS

5. Configure el firewall para abrir los puertos 80 y 443

  1. Ir a la nube de la consola .
  2. seleccione el proyecto GCP.
  3. Vaya a Menú de navegación > Compute Engine > Instancia de VM > Configurar regla de firewall.

Instale el software necesario en la máquina virtual

  1. Instalar Python 3 y python3-env:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. Instalar Android SDK y el ADB disponible en el camino.
    sudo apt install android-sdk
    

    Para instalar acoplable y estibador-componer, ver acoplable y estibador-componer . Asegúrese de que puede ejecutar estos como el usuario no root .

  3. Para confirmar la virtualización de hardware soportes de CPU (el comando debe dar lugar a un número distinto de cero):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Instale la máquina virtual del kernel (KVM). Para instalar KVM, ejecute:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. Para verificar KVM es trabajar:
    sudo apt install cpu-checker
    kvm-ok
    
    La salida debe ser:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. Para instalar Node.js y el nodo de paquetes Manager (NPM):
    sudo apt install nodejs npm
    

Iniciar los contenedores alojados

  1. Para verificar la instalación, ejecute los contenedores de Android Emulator alojados desde el repositorio público. Puede encontrar más información sobre los contenedores aquí . Ahora puede ejecutar estos contenedores sin construirlos. Por ejemplo:
    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
    

    Esto abre el contenedor (si no está disponible localmente) y lo inicia.

  2. Cuando se inicie el contenedor, conéctese al dispositivo configurando ADB de la misma manera que conecta un AVD en un host local. Por ejemplo:
    adb connect localhost:5555
    adb devices
    
    La salida debe ser:
    List of devices attached
    localhost:5555 device
    

Configurar el servicio del emulador AAOS

Para configurar el servicio del emulador:

  1. Instala el guión de contenedores Android Emulador acoplable:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. Esto activa un entorno virtual y hace que el ejecutable emu-docker esté disponible. Para obtener información detallada acerca de su uso, lanzarlo:
    emu-docker -h
    
  3. Para crear los contenedores de Docker, acepte los acuerdos de licencia.
  4. Cree el contenedor Docker del emulador de AAOS.
  5. Descargar un emulador de construcción posterior a la versión 7154743. Por ejemplo:
    sdk-repo-linux-emulator-7154743.zip
    
  6. Descargue la imagen del sistema del emulador AAOS. Por ejemplo, sdk-repo-linux-system-images-7115454.zip :
    emu-docker create <emulator-zip> <system-image-zip>
    
  7. Cree los contenedores web y establezca el nombre de usuario y la contraseña para el acceso remoto.
    ./create_web_container.sh -p user1,passwd1
    
  8. Iniciar el servicio web de la AAOS Emulador:
    docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
    

¡Ha iniciado con éxito un servicio web de emulador de AAOS! Use lo siguiente para acceder a él en un navegador web:

https://<VM_External__IP>

Solución de problemas

Si se produce un error de conexión a la IP externa VM, asegúrese de que la máquina virtual está configurado para permitir el tráfico HTTP y HTTPS. Para validar esto, vea Ejecutar un servidor Web Apache básica .

Configurar el servidor de turnos

Siempre puedes usar tu propio servidor de turnos. A continuación se proporciona una muestra en una instancia de VM de Google Cloud.

Nota: Para que el servidor a su vez en una instancia de la nube de Google VM, asegúrese de configurar la máquina virtual de reglas de cortafuegos para permitir el tráfico en los puertos TCP y UDP 3478 y 3479.

  1. Instalar el servidor coturn:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. Modificar /etc/turnserver.conf añadiendo las líneas siguientes:
    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
    
  3. Modificar el archivo YAML acoplable Componer para incluir la configuración TURNO:
    cd android-emulator-container-script
    nano  js/docker/docker-compose-build.yaml
    
  4. Añadir las siguientes dos líneas de entorno en la sección emulador:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. Reinicie el servicio del emulador AAOS con la configuración de giro. Asegúrese de cambiar el servidor a su vez IP, nombre de usuario y credenciales a continuación con su propia:
    export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}"
    docker-compose -f js/docker/docker-compose-build.yaml up