Auf dieser Seite wird beschrieben, wie Sie den AAOS-Emulator als Webdienst ausführen und in einen Webbrowser, damit Nutzer per Fernzugriff darauf zugreifen können. So erhalten Sie eine lückenlose, minimal realisierbare Referenz durch Google Cloud Compute Engine Sie können diesen Dienst jedoch auf jeder öffentlichen oder privaten Cloud-Plattform Ihrer Wahl verwenden.
Zweck
Durch diese zentralisierte Konfiguration und Einrichtung ist der AAOS-Emulator im gesamten Unternehmen zugänglich. Lieferunternehmen und Entwickelnden zu Hause arbeiten. So lassen sich die Verwaltung und Umstellung effizienter gestalten. AAOS-Emulator auf neue Versionen umstellen und Zeit für die Einrichtung und Verwaltung lokaler Computer sparen für einzelne Nutzende. Diese Lösung optimiert die Nutzung von Hardwareressourcen und ermöglicht und kostengünstigere App-Entwicklungsumgebung nutzen. Zum Beispiel für folgende Zwecke:
- Nutzungsstudien, Bewertung der Nutzererfahrung, Kundensupport und Schulungen.
- Demos für potenzielle Kunden und in Vertriebskanälen
- Apps (einschließlich täglicher OEM-HMI-Builds) in großem Umfang testen, validieren und sogar debuggen. Erwägen Sie den Emulator als Ersatz für die Testbänke, die zur Entwicklung von Apps verwendet werden.
- Die Kundenservicemitarbeiter im Callcenter von OEMs haben eine einheitliche, leicht zugängliche HU-Benutzeroberfläche.
Die Verwendung des AAOS-Emulators bietet zahlreiche Vorteile:
- Mit einem Setupskript einen benutzerdefinierten und cloudbasierten AAOS-Emulator erstellen (Cloud-Emulator).
- Erstellen Sie ein benutzerdefiniertes AAOS-Cloud-Emulator-Image für VM-Instanzen:
<ph type="x-smartling-placeholder">
- </ph>
- Bereit zur Einrichtung eines cloudbasierten Emulators.
- Öffentliche AAOS-AVD-Images, mit denen der Dienstersteller ein AAOS-AVD starten kann einen Befehl. Beispielsweise können öffentliche OEM-AVD-Bilder als Beispiele dienen, die Partner anpassen und anwenden können.
Architektur
Die Architektur des Cloud-Emulator-Beispiels ist unten dargestellt. Ihr erstes mit Ihren eigenen OEM-AVD-Bildern funktioniert.
Abbildung 1: Cloud AVD-Architektur.
Die wichtigsten Emulatorbausteine sind:
hier.Artikel | Zweck |
---|---|
Android-Emulator | Emulator-Instanz hostet AVD-Images |
Goldfisch-Webrtc-Brücke | Linux-App zur Kommunikation zwischen der Reaktions-App und dem AAOS-Emulator |
Android-Emulator-WebRTC | React-App zur Anzeige der Emulator-Benutzeroberfläche in einem Web Browser. React erfasst außerdem Nutzereingabeereignisse und sendet sie an den Server zurück. |
Container-Scripts im Android-Emulator | Python-Scripts zum Verwalten und Erstellen von Docker-Images und -Containern für die oben genannten Softwaremodule. |
Erzeugt Tokens, um die Zugriffsberechtigungen des Emulators zu verwalten. | |
Server einschalten | Stellt eine direkte WebRTC-Verbindung zwischen dem Client und dem Server her. Server einschalten ist nur erforderlich, wenn der Emulator-Dienst hinter Firewalls oder Proxys ausgeführt wird. |
Envoy | Einen Proxy-Dienst, um:
|
Emulator auf einer Cloud-VM einrichten
So erstellen Sie ein GCP-Projekt:
- Rufen Sie die Google Cloud Console auf und Projekt auswählen
- Informationen zum Aktivieren der Abrechnung für Ihr Google Cloud-Projekt finden Sie unter Abrechnung für ein Projekt aktivieren, deaktivieren oder ändern
- Aktivieren Sie die API.
Linux-VM in GCE erstellen
1. Verschachtelte Virtualisierung aktivieren
Standardmäßig ist die verschachtelte Virtualisierung auf Projekt-, Ordner- oder Organisationsebene zulässig. Es sei denn, jemand in Ihrer Organisation hat die verschachtelte Virtualisierung deaktiviert, müssen Sie nichts weiter tun.
- gcloud-Befehlszeilentool verwenden
um zu bestätigen, dass die verschachtelte Virtualisierung zulässig ist:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Bootbares Ubuntu-1804-lts-Laufwerk erstellen
- Gehe zu Cloud Console:
- Wählen Sie das GCP-Projekt aus.
- Öffnen Sie das Navigationsmenü und wählen Sie Compute Engine > Laufwerke >
Laufwerk erstellen.
- Geben Sie einen Namen für das Laufwerk an. Beispiel:
ubuntu1804lts
- Wählen Sie eine Region und Zone aus. Um die verschachtelte Virtualisierung zu unterstützen, muss die Region und Zone, die Sie auswählen, unterstützen Haswell-Prozessoren (oder höher). Weitere Informationen finden Sie unter Regionen und Zonen.
- Quell-Image von
ubuntu-1804-bionic-v20210211
auswählen - Legen Sie eine geeignete Laufwerksgröße fest (empfohlen werden 100 GB oder mehr).
- Geben Sie einen Namen für das Laufwerk an. Beispiel:
Abbildung 2: Erstellen Sie ein bootfähiges Ubuntu-Laufwerk.
3. Erstellen Sie ein benutzerdefiniertes Image mit einem speziellen Lizenzschlüssel, um VMX zu aktivieren
- Rufen Sie die Cloud Console auf.
- Öffnen Sie Cloud Shell und verwenden Sie den folgenden Befehl:
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"
- Geben Sie einen Image-Namen ein. Beispiel:
aaos-emulator-image
- Legen Sie für die Laufwerkszone die Zone fest, in der Sie das Laufwerk erstellt haben.
- Geben Sie als Laufwerknamen den Namen an, mit dem Sie das Laufwerk erstellt haben.
Beispiel:
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"
- Geben Sie einen Image-Namen ein. Beispiel:
Weitere Informationen finden Sie unter Verschachtelte Virtualisierungs-VM-Instanz:
4. VM-Instanz mit dem benutzerdefinierten Image erstellen
- Rufen Sie die Cloud Console auf.
- Wählen Sie das GCP-Projekt aus.
- Klicken Sie auf Navigationsmenü > Compute Engine > VM-Instanz.
Abbildung 3: Erstellen Sie eine VM-Instanz.
- Geben Sie einen Instanznamen ein. Beispiel:
aaosemulator
- Wählen Sie die gewünschte Maschinenfamilie und den gewünschten Typ aus. Die Maschine muss vier vCPUs und 16 GB Arbeitsspeicher (oder mehr)
- Wählen Sie als CPU-Plattform Intel Cascade Lake (oder höher) aus.
- Ändern Sie das Bootlaufwerk in das im vorherigen Schritt erstellte Image.
- Firewall aktivieren für:
<ph type="x-smartling-placeholder">
- </ph>
- HTTP-Traffic zulassen
- HTTPS-Traffic zulassen
5. Firewall zum Öffnen von Port 80 und 443 konfigurieren
- Rufen Sie die Cloud Console auf.
- und wählen Sie das GCP-Projekt aus.
- Klicken Sie auf Navigationsmenü > Compute Engine > VM-Instanz > Richten Sie eine Firewallregel ein.
Erforderliche Software auf der VM installieren
- Installieren Sie Python 3 und Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Installieren Sie das Android SDK.
und ADB im Pfad verfügbar sind.
sudo apt install android-sdk
Informationen zum Installieren von Docker und Docker-compose finden Sie unter Docker und Docker-compose: Stellen Sie sicher, dass Sie Nutzer ohne Root-Berechtigung.
- Um zu prüfen, ob die CPU Hardwarevirtualisierung unterstützt (der Befehl sollte zu einer
Zahl ungleich null):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Kernel Virtual Machine (KVM) installieren Führen Sie folgenden Befehl aus, um KVM zu installieren:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- So prüfen Sie, ob KVM funktioniert:
Die Ausgabe sollte so aussehen:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- So installieren Sie Node.js und Node Packet Manager (NPM):
sudo apt install nodejs npm
Gehostete Container starten
- Führen Sie die gehosteten Android Emulator-Container aus der öffentlichen Version aus, um die Installation zu prüfen
zu erstellen. Hier finden Sie Details zu den Containern,
hier.
Sie können diese Container jetzt ausführen, ohne sie zu erstellen. Beispiel:
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
Dadurch wird der Container abgerufen (falls er nicht lokal verfügbar ist) und gestartet.
- Wenn der Container gestartet wird, stellen Sie eine Verbindung zum Gerät her, indem Sie ADB auf dieselbe Weise konfigurieren
wie ein AVD auf einem lokalen Host verbinden. Beispiel:
Die Ausgabe sollte so aussehen:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
AAOS-Emulator-Dienst einrichten
So richten Sie den Emulator-Dienst ein:
- Installieren Sie das Android Emulator Docker-Containerskript:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Dadurch wird eine virtuelle Umgebung aktiviert und die ausführbare Datei „emu-docker“ verfügbar.
Starten Sie das Tool, um detaillierte Informationen zu seiner Verwendung zu erhalten:
emu-docker -h
- Akzeptieren Sie die Lizenzvereinbarungen, um die Docker-Container zu erstellen.
- Erstellen Sie den Docker-Container für den AAOS-Emulator.
- Laden Sie einen Emulator-Build nach Version 7154743 herunter. Beispiel:
sdk-repo-linux-emulator-7154743.zip
- Laden Sie das System-Image des AAOS-Emulators herunter. Beispiel:
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Erstellen Sie die Webcontainer und legen Sie einen Nutzernamen und ein Passwort für den Remotezugriff fest.
./create_web_container.sh -p user1,passwd1
- Starten Sie den AAOS-Emulator-Webdienst:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Sie haben erfolgreich einen AAOS-Emulator-Webdienst gestartet. Verwenden Sie folgenden Code, um auf in einem Webbrowser:
https://<VM_External__IP>
Fehlerbehebung
Wenn ein Verbindungsfehler zur externen IP-Adresse der VM auftritt, prüfen Sie, ob die VM so eingerichtet ist, dass sie HTTP- und HTTPS-Traffic. Informationen zur Validierung finden Sie unter Einfachen Apache-Webserver ausführen
Turnserver einrichten
Du kannst immer deinen eigenen Turnserver verwenden. Das folgende Beispiel zeigt eine Google Cloud-VM Instanz.
Hinweis:Damit der Turn-Server auf einer Google Cloud-VM-Instanz funktioniert, Konfigurieren Sie die VM-Firewallregel so, dass Traffic über die TCP- und UDP-Ports 3478 und 3479 zugelassen wird.
- Installieren Sie den Coturn-Server:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Ändern Sie
/etc/turnserver.conf
, indem Sie die folgenden Zeilen hinzufügen: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
- Ändern Sie die YAML-Datei „Docker Compose“ so, dass sie die TURN-Konfiguration enthält:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Fügen Sie im Abschnitt „Emulator“ die folgenden beiden Umgebungszeilen hinzu:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Starten Sie den AAOS-Emulator-Dienst mit der Abbiegekonfiguration neu.
Achten Sie darauf, die IP-Adresse des Turnservers, den Nutzernamen und die Anmeldedaten unten durch Ihre eigenen zu ersetzen:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up