In questa pagina viene descritto come eseguire AAOS Emulator come servizio web e in un browser web per renderlo accessibile agli utenti da remoto. In questo modo, viene fornito un riferimento minimo viable end-to-end tramite Compute Engine di Google Cloud. Detto questo, puoi utilizzare questo servizio su qualsiasi piattaforma cloud pubblica o privata che preferisci.
Finalità
Questa configurazione e impostazione centralizzata rende AAOS Emulator accessibile a un'intera azienda, a fornitori e a sviluppatori che lavorano da casa. In questo modo, la gestione e l'upgrade dell'emulatore AAOS alle nuove versioni diventano più efficienti ed eliminano il tempo necessario per configurare e gestire le macchine locali per i singoli utenti. Questa soluzione ottimizza l'utilizzo delle risorse hardware e consente un ambiente di sviluppo di app a costi inferiori. Ad esempio, ai fini di:
- Ricerca sugli utenti, revisione dell'esperienza utente, assistenza clienti e formazione.
- Demo a potenziali clienti e nei canali di vendita.
- Testare, convalidare e persino eseguire il debug delle app (incluse le build HMI giornaliere OEM) su larga scala. Considera l'emulatore un sostituto delle piattaforme di test utilizzate per sviluppare app.
- Gli agenti del call center dei clienti OEM hanno un'interfaccia utente dell'hub di assistenza uniforme e di facile accesso.
L'utilizzo dell'emulatore AAOS presenta numerosi vantaggi:
- Utilizza uno script di configurazione per creare un emulatore AAOS personalizzato e basato su cloud. (emulatore cloud).
- Crea un'immagine di AAOS Cloud Emulator personalizzata per le istanze VM:
- Configurazione pronta di un emulatore basato su cloud.
- Immagini AVD AAOS pubbliche disponibili per il creator del servizio per avviare un AVD AAOS con un comando. Ad esempio, immagini AVD OEM pubbliche come esempi che i partner possono adattare e applicare.
Architettura
L'architettura dell'esempio di emulatore cloud è illustrata di seguito. Il tuo primo servizio minimamente fattibile funzionerà aggiungendo le tue immagini AVD OEM.
Figura 1. Architettura AVD cloud.
I componenti di base dell'emulatore sono:
qui.Articolo | Finalità |
---|---|
Emulatore Android | L'istanza dell'emulatore ospita le immagini AVD |
Goldfish-webrtc bridge | App Linux per fornire la comunicazione tra l'app React e l'emulatore AAOS |
android-emulator-webrtc | App React per visualizzare l'interfaccia utente dell'emulatore in un browser web. React acquisisce anche gli eventi di input utente e li invia nuovamente al server. |
Script del contenitore dell'emulatore Android | Script Python per gestire e creare immagini e container Docker per i moduli software sopra indicati. |
Genera token per gestire le autorizzazioni di accesso dell'emulatore. | |
Attiva il server | Stabilisce una connessione diretta WebRTC tra il client e il server. Il server di rotazione è necessario solo quando il servizio Emulator è in esecuzione dietro firewall o proxy. |
Envoy | Un servizio proxy per:
|
Configurare l'emulatore su una VM cloud
Per creare un progetto Google Cloud:
- Vai alla console Google Cloud e seleziona un progetto.
- Per verificare che la fatturazione sia attivata per il tuo progetto Google Cloud, consulta Attivare, disattivare o modificare la fatturazione per un progetto .
- Attiva l'API.
Creare una VM Linux in GCE
1. Abilita la virtualizzazione nidificata
Per impostazione predefinita, la virtualizzazione nidificata è consentita a livello di progetto, cartella o organizzazione. A meno che qualcuno della tua organizzazione non abbia disattivato la virtualizzazione nidificata, non devi fare nulla per attivarla.
- Utilizza lo strumento a riga di comando gcloud per verificare che la virtualizzazione nidificata sia consentita:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Crea un disco di avvio Ubuntu-1804-lts
- Vai alla console Cloud.
- Seleziona il progetto Google Cloud.
- Vai al menu Navigazione e seleziona Compute Engine > Dischi >
Crea disco.
- Fornisci un nome per il disco. Ad esempio,
ubuntu1804lts
- Seleziona una regione e una zona. Per supportare la virtualizzazione nidificata, assicurati che la Regione e la Zona selezionate supportino i processori Haswell (o versioni successive). Per saperne di più, consulta Regioni e zone.
- Seleziona l'immagine di origine di
ubuntu-1804-bionic-v20210211
- Imposta una dimensione del disco appropriata (consigliati almeno 100 GB).
- Fornisci un nome per il disco. Ad esempio,
Figura 2. Crea un disco di avvio Ubuntu.
3. Crea un'immagine personalizzata con una chiave di licenza speciale per attivare VMX
- Vai alla console Cloud.
- Apri Cloud Shell e utilizza il seguente comando:
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"
- Inserisci un nome per l'immagine. Ad esempio,
aaos-emulator-image
- Imposta la zona del disco sulla zona in cui hai creato il disco.
- Imposta il nome del disco sul nome utilizzato per crearlo.
Ad esempio:
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"
- Inserisci un nome per l'immagine. Ad esempio,
Per maggiori dettagli, consulta Istanze VM con virtualizzazione nidificata.
4. Crea un'istanza VM utilizzando l'immagine personalizzata
- Vai alla console Cloud.
- Seleziona il progetto Google Cloud.
- Vai a Menu di navigazione > Compute Engine > Istanza VM.
Figura 3. Crea un'istanza VM.
- Inserisci un nome per l'istanza. Ad esempio,
aaosemulator
- Seleziona la famiglia e il tipo di macchina che ti interessano. Assicurati che la macchina contenga quattro vCPU e almeno 16 GB di memoria.
- Seleziona la piattaforma CPU Intel Cascade Lake (o successiva).
- Modifica il disco di avvio impostandolo sull'immagine creata nel passaggio precedente.
- Attiva il firewall per:
- Consenti traffico HTTP
- Consenti traffico HTTPS
5. Configura il firewall per aprire le porte 80 e 443
- Vai alla console Cloud.
- Seleziona il progetto Google Cloud.
- Vai a Menu di navigazione > Compute Engine > Istanza VM > Configura regola firewall.
Installa il software necessario sulla VM
- Installa Python 3 e Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Installa l'SDK Android
e ADB disponibili nel percorso.
sudo apt install android-sdk
Per installare Docker e Docker-compose, consulta Docker e Docker-compose. Assicurati di poterli eseguire come utente non root.
- Per verificare che la CPU supporti la virtualizzazione hardware (il comando deve restituire un
numero diverso da zero):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Installa la macchina virtuale del kernel (KVM). Per installare KVM, esegui:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Per verificare che KVM funzioni:
L'output dovrebbe essere:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Per installare Node.js e Node Packet Manager (NPM):
sudo apt install nodejs npm
Avvia i container ospitati
- Per verificare l'installazione, esegui i container di Android Emulator ospitati dal repository pubblico. Puoi trovare i dettagli dei contenitori
qui.
Ora puoi eseguire questi container senza doverli compilare. Ad esempio:
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
Il contenitore viene scaricato (se non è disponibile localmente) e avviato.
- Quando il contenitore viene avviato, connettiti al dispositivo configurando ADB nello stesso modo in cui colleghi un AVD su un host locale. Ad esempio:
L'output dovrebbe essere:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Configura il servizio AAOS Emulator
Per configurare il servizio Emulator:
- Installa lo script del contenitore Docker dell'emulatore Android:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- In questo modo viene attivato un ambiente virtuale e viene reso disponibile l'eseguibile emu-docker.
Per informazioni dettagliate sul suo utilizzo, avvialo:
emu-docker -h
- Per creare i container Docker, accetta i contratti di licenza.
- Crea il container Docker dell'emulatore AAOS.
- Scarica una build dell'emulatore successiva alla versione 7154743. Ad esempio:
sdk-repo-linux-emulator-7154743.zip
- Scarica l'immagine di sistema dell'emulatore AAOS. Ad esempio,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Crea i contenitori web e imposta il nome utente e la password per l'accesso remoto.
./create_web_container.sh -p user1,passwd1
- Avvia il servizio web dell'emulatore AAOS:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Hai avviato correttamente un servizio web di emulatore AAOS. Per accedere su un browser web:
https://<VM_External__IP>
Risoluzione dei problemi
Se si verifica un errore di connessione all'IP esterno della VM, assicurati che la VM sia configurata per consentire il traffico sia HTTP che HTTPS. Per convalidare questa operazione, consulta Eseguire un server web Apache di base.
Configura il server di conversione
Puoi sempre utilizzare il tuo server di indicazioni stradali. Di seguito è riportato un esempio su un'istanza VM Google Cloud.
Nota: per far funzionare il server TURN su un'istanza VM Google Cloud, assicurati di configurare la regola firewall della VM in modo da consentire il traffico sulle porte TCP e UDP 3478 e 3479.
- Installa il server coturn:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Modifica
/etc/turnserver.conf
aggiungendo le seguenti righe: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
- Modifica il file YAML di Docker Compose per includere la configurazione TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Aggiungi le seguenti due righe di ambiente nella sezione dell'emulatore:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Riavvia il servizio AAOS Emulator con la configurazione della svolta.
Assicurati di sostituire l'IP, il nome utente e le credenziali del server di turn indicati di seguito con i tuoi:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up