Cette page décrit comment exécuter AAOS Emulator en tant que service Web et l'exécuter dans un navigateur Web pour le rendre accessible à distance aux utilisateurs. Cela fournit une référence de bout en bout minimalement viable via Google Cloud Compute Engine . Cela dit, vous pouvez utiliser ce service sur n'importe quelle plateforme cloud publique ou privée de votre choix.
But
Cette configuration et cette configuration centralisées rendent AAOS Emulator accessible à l'ensemble d'une entreprise, à un fournisseur et aux développeurs travaillant à domicile. Cela rend plus efficace la gestion et la mise à niveau de l'émulateur AAOS vers de nouvelles versions et élimine le temps nécessaire à la configuration et à la gestion des machines locales pour les utilisateurs individuels. Cette solution optimise l'utilisation des ressources matérielles et permet un environnement de développement d'applications à moindre coût. Par exemple, aux fins de :
- Recherche d'utilisateurs, examen de l'expérience utilisateur, support client et formation.
- Démonstrations auprès de clients potentiels et dans les canaux de vente.
- Testez, validez et même déboguez des applications (y compris les versions quotidiennes d'IHM OEM) à grande échelle. Considérez l’émulateur comme un substitut aux bancs de test utilisés pour développer des applications.
- Les agents des centres d’appels des clients OEM disposent d’une interface utilisateur HU uniforme et facile d’accès.
Les avantages de l’utilisation de l’émulateur AAOS sont nombreux :
- Utilisez un script de configuration pour créer un émulateur AAOS personnalisé et basé sur le cloud (émulateur cloud).
- Créez une image AAOS Cloud Emulator personnalisée pour les instances de VM :
- Configuration prête d'un émulateur basé sur le cloud.
- Images publiques AAOS AVD disponibles pour le créateur du service pour démarrer un AAOS AVD avec une commande. Par exemple, des images AVD OEM publiques comme exemples que les partenaires peuvent adapter et appliquer.
Architecture
L'architecture de l'exemple d'émulateur cloud est illustrée ci-dessous. Votre premier service minimalement viable fonctionnera en ajoutant vos propres images OEM AVD.
Figure 1. Architecture Cloud AVD.
Les principaux éléments constitutifs de l'émulateur sont :
Article | But |
---|---|
Émulateur Android | L'instance d'émulateur héberge des images AVD |
Pont Goldfish-webrtc | Application Linux pour assurer la communication entre l'application React et l'émulateur AAOS |
émulateur Android-webrtc | Application React pour afficher l'interface utilisateur de l'émulateur dans un navigateur Web. React capture également les événements d'entrée de l'utilisateur et les renvoie au serveur. |
Scripts de conteneur d'émulateur Android | Scripts Python pour gérer et créer des images Docker et des conteneurs pour les modules logiciels ci-dessus. |
Génère des jetons pour gérer les autorisations d'accès de l'émulateur. | |
Tourner le serveur | Établit une connexion directe WebRTC entre le client et le serveur. Turn Server n'est requis que lorsque le service Emulator s'exécute derrière des pare-feu ou des proxys. |
Envoyé | Un service proxy pour :
|
Configurer l'émulateur sur une VM cloud
Pour créer un projet GCP :
- Accédez à Google Cloud Console et sélectionnez un projet .
- Pour confirmer que la facturation est activée pour votre projet Google Cloud, consultez Activer, désactiver ou modifier la facturation pour un projet .
- Activez l'API .
Créer une VM Linux dans GCE
1. Activer la virtualisation imbriquée
Par défaut, la virtualisation imbriquée est autorisée au niveau du projet, du dossier ou de l'organisation. À moins qu'un membre de votre organisation ait désactivé la virtualisation imbriquée , vous n'avez rien à faire pour l'activer.
- Utilisez l' outil de ligne de commande gcloud pour confirmer que la virtualisation imbriquée est autorisée :
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Créez un disque de démarrage Ubuntu-1804-lts
- Accédez à Cloud Console .
- Sélectionnez le projet GCP.
- Accédez au menu Navigation et sélectionnez Compute Engine > Disques > Créer un disque .
- Fournissez un nom de disque. Par exemple,
ubuntu1804lts
- Sélectionnez une région et une zone. Pour prendre en charge la virtualisation imbriquée, assurez-vous que la région et la zone que vous sélectionnez prennent en charge les processeurs Haswell (ou version ultérieure). Pour en savoir plus, consultez Régions et zones .
- Sélectionnez l'image source d'
ubuntu-1804-bionic-v20210211
- Définissez une taille de disque appropriée (100 Go ou plus recommandés).
- Fournissez un nom de disque. Par exemple,
Figure 2. Créez un disque de démarrage Ubuntu.
3. Créez une image personnalisée avec une clé de licence spéciale pour activer VMX
- Accédez à la console Cloud .
- Ouvrez un Cloud Shell et utilisez la commande suivante :
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"
- Entrez un nom d'image. Par exemple,
aaos-emulator-image
- Définissez Disk Zone sur la zone dans laquelle vous avez créé le disque.
- Définissez le nom du disque sur le nom que vous avez utilisé pour créer le disque.
Par exemple:
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"
- Entrez un nom d'image. Par exemple,
Pour plus de détails, consultez Instance de VM de virtualisation imbriquée .
4. Créez une instance de VM à l'aide de l'image personnalisée
- Accédez à Cloud Console .
- Sélectionnez le projet GCP.
- Accédez à Menu de navigation > Compute Engine > Instance de VM.
Figure 3. Créez une instance de VM.
- Entrez un nom d'instance. Par exemple,
aaosemulator
- Sélectionnez la famille et le type de machine souhaités. Assurez-vous que la machine contient quatre processeurs virtuels et 16 Go de mémoire (ou plus).
- Sélectionnez la plate-forme CPU Intel Cascade Lake (ou version ultérieure).
- Remplacez le disque de démarrage par l'image créée à l'étape précédente.
- Activer le pare-feu pour :
- Autoriser le trafic HTTP
- Autoriser le trafic HTTPS
5. Configurez le pare-feu pour ouvrir les ports 80 et 443
- Accédez à Cloud Console .
- sélectionnez le projet GCP.
- Accédez au menu de navigation > Compute Engine > Instance de VM > Configurer une règle de pare-feu.
Installer le logiciel requis sur la VM
- Installez Python 3 et Python3-env :
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Installez le SDK Android et l'ADB disponibles sur le chemin.
sudo apt install android-sdk
Pour installer Docker et Docker-compose, consultez Docker et Docker-compose . Assurez-vous que vous pouvez les exécuter en tant qu'utilisateur non root .
- Pour confirmer que le processeur prend en charge la virtualisation matérielle (la commande doit donner un nombre différent de zéro) :
egrep -c '(vmx|svm)' /proc/cpuinfo
- Installez la machine virtuelle du noyau (KVM). Pour installer KVM, exécutez :
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Pour vérifier que KVM fonctionne :
sudo apt install cpu-checker kvm-ok
Le résultat doit être :INFO: /dev/kvm exists KVM acceleration can be used
- Pour installer Node.js et Node Packet Manager (NPM) :
sudo apt install nodejs npm
Démarrer les conteneurs hébergés
- Pour vérifier l'installation, exécutez les conteneurs Android Emulator hébergés à partir du référentiel public. Vous pouvez trouver des détails sur les conteneurs ici . Vous pouvez désormais exécuter ces conteneurs sans les créer. Par exemple :
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
Cela déroule le conteneur (s'il n'est pas disponible localement) et le lance.
- Lorsque le conteneur est lancé, connectez-vous à l'appareil en configurant ADB de la même manière que vous connectez un AVD sur un hôte local. Par exemple :
adb connect localhost:5555 adb devices
Le résultat doit être :List of devices attached localhost:5555 device
Configurer le service d'émulateur AAOS
Pour configurer le service Émulateur :
- Installez le script du conteneur Docker de l'émulateur Android :
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Cela active un environnement virtuel et rend l'exécutable emu-docker disponible. Pour obtenir des informations détaillées sur son utilisation, lancez-le :
emu-docker -h
- Pour créer les conteneurs Docker, acceptez les contrats de licence.
- Créez le conteneur Docker de l'émulateur AAOS.
- Téléchargez une version d'émulateur ultérieure à la version 7154743. Par exemple :
sdk-repo-linux-emulator-7154743.zip
- Téléchargez l'image du système d'émulateur AAOS. Par exemple,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Créez les conteneurs Web et définissez le nom d'utilisateur et le mot de passe pour l'accès à distance.
./create_web_container.sh -p user1,passwd1
- Démarrez le service Web de l'émulateur AAOS :
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Vous avez démarré avec succès un service Web d'émulateur AAOS ! Utilisez ce qui suit pour y accéder sur un navigateur Web :
https://<VM_External__IP>
Dépannage
Si une erreur de connexion à l'adresse IP externe de la VM se produit, assurez-vous que la VM est configurée pour autoriser le trafic HTTP et HTTPS. Pour valider cela, consultez Exécution d'un serveur Web Apache de base .
Configurer le serveur de tour
Vous pouvez toujours utiliser votre propre serveur de tour. Vous trouverez ci-dessous un exemple sur une instance de Google Cloud VM.
Remarque : Pour que le serveur Turn fonctionne sur une instance de VM Google Cloud, veillez à configurer la règle de pare-feu de la VM pour autoriser le trafic sur les ports TCP et UDP 3478 et 3479.
- Installez le serveur Coturn :
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Modifiez
/etc/turnserver.conf
en ajoutant les lignes suivantes :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
- Modifiez le fichier Docker Compose YAML pour inclure la configuration TURN :
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Ajoutez les deux lignes d'environnement suivantes dans la section émulateur :
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Redémarrez le service AAOS Emulator avec la configuration tour. Assurez-vous de remplacer l'adresse IP du serveur Turn, le nom d'utilisateur et les informations d'identification ci-dessous par les vôtres :
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up