Na tej stronie opisano, jak uruchomić emulator AAOS jako usługę internetową i uruchomić go w przeglądarce internetowej, aby udostępnić go użytkownikom zdalnie. Dzięki temu uzyskasz kompleksowe, minimalnie wykonalne odniesienie za pośrednictwem Google Cloud Compute Engine . To powiedziawszy, możesz korzystać z tej usługi na dowolnej wybranej platformie chmury publicznej lub prywatnej.
Zamiar
Ta scentralizowana konfiguracja i konfiguracja sprawiają, że emulator AAOS jest dostępny dla całej firmy, dostawcy i programistów pracujących w domu. Dzięki temu zarządzanie emulatorem AAOS i jego aktualizacja do nowych wersji staje się bardziej efektywne, a także eliminuje czas potrzebny na konfigurowanie i zarządzanie lokalnymi maszynami dla indywidualnych użytkowników. To rozwiązanie optymalizuje wykorzystanie zasobów sprzętowych i umożliwia tańsze środowisko tworzenia aplikacji. Na przykład w celach:
- Badania użytkowników, przegląd doświadczeń użytkowników, obsługa klienta i szkolenia.
- Demo dla potencjalnych klientów oraz w kanałach sprzedaży.
- Testuj, sprawdzaj, a nawet debuguj aplikacje (w tym codzienne kompilacje OEM HMI) na dużą skalę. Potraktuj emulator jako substytut stanowisk testowych używanych do tworzenia aplikacji.
- Agenci call center klientów OEM mają jednolity, łatwo dostępny interfejs HU.
Korzyści z używania emulatora AAOS są liczne:
- Użyj skryptu instalacyjnego, aby utworzyć dostosowany i oparty na chmurze emulator AAOS (emulator chmury).
- Utwórz dostosowany obraz emulatora chmury AAOS dla instancji maszyn wirtualnych:
- Gotowa konfiguracja emulatora opartego na chmurze.
- Publiczne obrazy AAOS AVD dostępne dla twórcy usługi w celu uruchomienia AAOS AVD za pomocą polecenia. Na przykład publiczne obrazy AVD OEM jako próbki do dostosowania i zastosowania przez partnerów.
Architektura
Architekturę przykładowego emulatora chmury przedstawiono poniżej. Twoja pierwsza minimalnie opłacalna usługa będzie działać po dodaniu własnych obrazów AVD OEM.
Rysunek 1. Architektura Cloud AVD.
Kluczowe elementy składowe emulatora to:
Przedmiot | Zamiar |
---|---|
Emulator Androida | Instancja emulatora obsługuje obrazy AVD |
Most Goldfish-webrtc | Aplikacja dla systemu Linux zapewniająca komunikację między aplikacją reagującą a emulatorem AAOS |
emulator androida-webrtc | Aplikacja Reaguj , aby wyświetlić interfejs emulatora w przeglądarce internetowej. React przechwytuje także zdarzenia wprowadzane przez użytkownika i wysyła je z powrotem na serwer. |
Skrypty kontenerowe emulatora Androida | Skrypty Pythona do zarządzania i tworzenia obrazów i kontenerów Dockera dla powyższych modułów oprogramowania. |
Generuje tokeny do zarządzania uprawnieniami dostępu emulatora. | |
Włącz serwer | Ustanawia bezpośrednie połączenie WebRTC między klientem a serwerem. Serwer Turn jest wymagany tylko wtedy, gdy usługa Emulator działa za zaporami ogniowymi lub serwerami proxy. |
Wysłannik | Usługa proxy do:
|
Skonfiguruj emulator na maszynie wirtualnej w chmurze
Aby utworzyć projekt GCP:
- Przejdź do Google Cloud Console i wybierz projekt .
- Aby upewnić się, że rozliczenia są włączone w Twoim projekcie Google Cloud, zobacz Włączanie, wyłączanie i zmienianie rozliczeń w projekcie .
- Włącz interfejs API .
Utwórz maszynę wirtualną z systemem Linux w GCE
1. Włącz wirtualizację zagnieżdżoną
Domyślnie wirtualizacja zagnieżdżona jest dozwolona na poziomie projektu, folderu lub organizacji. Jeśli ktoś w Twojej organizacji nie wyłączył wirtualizacji zagnieżdżonej , nie musisz nic robić, aby ją włączyć.
- Użyj narzędzia wiersza poleceń gcloud, aby potwierdzić, że wirtualizacja zagnieżdżona jest dozwolona:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Utwórz dysk startowy Ubuntu-1804-lts
- Przejdź do Konsoli Chmury .
- Wybierz projekt GCP.
- Przejdź do menu Nawigacja i wybierz Compute Engine > Dyski > Utwórz dysk .
- Podaj nazwę dysku. Na przykład
ubuntu1804lts
- Wybierz region i strefę. Aby obsługiwać wirtualizację zagnieżdżoną, upewnij się, że wybrany region i strefa obsługują procesory Haswell (lub nowsze). Aby dowiedzieć się więcej, zobacz Regiony i Strefy .
- Wybierz obraz źródłowy
ubuntu-1804-bionic-v20210211
- Ustaw odpowiedni rozmiar dysku (zalecane jest 100 GB lub więcej).
- Podaj nazwę dysku. Na przykład
Rysunek 2. Utwórz dysk startowy Ubuntu.
3. Utwórz niestandardowy obraz ze specjalnym kluczem licencyjnym, aby włączyć VMX
- Przejdź do konsoli Cloud .
- Otwórz Cloud Shell i użyj następującego polecenia:
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"
- Wprowadź nazwę obrazu. Na przykład
aaos-emulator-image
- Ustaw Strefę dysku na strefę, w której utworzyłeś dysk.
- Ustaw nazwę dysku na nazwę użytą do utworzenia dysku.
Na przykład:
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"
- Wprowadź nazwę obrazu. Na przykład
Aby uzyskać szczegółowe informacje, zobacz Instancja maszyny wirtualnej zagnieżdżonej wirtualizacji .
4. Utwórz instancję maszyny wirtualnej, korzystając z dostosowanego obrazu
- Przejdź do Konsoli Chmury .
- Wybierz projekt GCP.
- Wybierz kolejno Menu nawigacyjne > Compute Engine > Instancja maszyny wirtualnej.
Rysunek 3. Utwórz instancję maszyny wirtualnej.
- Wprowadź nazwę instancji. Na przykład
aaosemulator
- Wybierz żądaną rodzinę maszyn i typ. Upewnij się, że maszyna zawiera cztery procesory wirtualne i 16 GB pamięci (lub więcej).
- Wybierz platformę procesora Intel Cascade Lake (lub nowszą).
- Zmień dysk rozruchowy na obraz utworzony w poprzednim kroku.
- Włącz zaporę sieciową dla:
- Zezwalaj na ruch HTTP
- Zezwalaj na ruch HTTPS
5. Skonfiguruj zaporę sieciową tak, aby otwierała porty 80 i 443
- Przejdź do Konsoli Chmury .
- wybierz projekt GCP.
- Wybierz kolejno Menu nawigacyjne > Compute Engine > Instancja maszyny wirtualnej > Skonfiguruj regułę zapory sieciowej.
Zainstaluj wymagane oprogramowanie na maszynie wirtualnej
- Zainstaluj Python 3 i Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Zainstaluj Android SDK i ADB dostępne na ścieżce.
sudo apt install android-sdk
Aby zainstalować Docker i Docker-compose, zobacz Docker i Docker-compose . Upewnij się, że możesz je uruchomić jako użytkownik inny niż root .
- Aby potwierdzić, że procesor obsługuje wirtualizację sprzętową (polecenie powinno dać liczbę niezerową):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Zainstaluj maszynę wirtualną jądra (KVM). Aby zainstalować KVM, uruchom:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Aby sprawdzić, czy KVM działa:
sudo apt install cpu-checker kvm-ok
Wynikiem powinno być:INFO: /dev/kvm exists KVM acceleration can be used
- Aby zainstalować Node.js i Menedżera pakietów węzła (NPM):
sudo apt install nodejs npm
Uruchom hostowane kontenery
- Aby zweryfikować instalację, uruchom hostowane kontenery emulatora Androida z publicznego repozytorium. Szczegóły dotyczące kontenerów znajdziesz tutaj . Możesz teraz uruchamiać te kontenery bez ich budowania. Na przykład:
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
Spowoduje to ściągnięcie kontenera (jeśli nie jest on dostępny lokalnie) i uruchomienie go.
- Po uruchomieniu kontenera połącz się z urządzeniem, konfigurując ADB w taki sam sposób, jak podłączasz AVD na hoście lokalnym. Na przykład:
adb connect localhost:5555 adb devices
Wynikiem powinno być:List of devices attached localhost:5555 device
Skonfiguruj usługę emulatora AAOS
Aby skonfigurować usługę Emulator:
- Zainstaluj skrypt kontenera Docker emulatora systemu Android:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Aktywuje to środowisko wirtualne i udostępnia wykonywalny emu-docker. Aby uzyskać szczegółowe informacje na temat jego użycia, uruchom go:
emu-docker -h
- Aby utworzyć kontenery Docker, zaakceptuj umowy licencyjne.
- Zbuduj kontener dokowany emulatora AAOS.
- Pobierz kompilację emulatora nowszą niż wersja 7154743. Na przykład:
sdk-repo-linux-emulator-7154743.zip
- Pobierz obraz systemu emulatora AAOS. Na przykład
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Utwórz kontenery internetowe i ustaw nazwę użytkownika i hasło dostępu zdalnego.
./create_web_container.sh -p user1,passwd1
- Uruchom usługę internetową emulatora AAOS:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Pomyślnie uruchomiłeś usługę internetową emulatora AAOS! Aby uzyskać do niego dostęp w przeglądarce internetowej, użyj następujących poleceń:
https://<VM_External__IP>
Rozwiązywanie problemów
Jeśli wystąpi błąd połączenia z zewnętrznym adresem IP maszyny wirtualnej, upewnij się, że maszyna wirtualna jest skonfigurowana tak, aby zezwalała na ruch HTTP i HTTPS. Aby to sprawdzić, zobacz Uruchamianie podstawowego serwera WWW Apache .
Skonfiguruj serwer zwrotny
Zawsze możesz skorzystać z własnego serwera turowego. Poniżej znajduje się przykład w instancji maszyny wirtualnej Google Cloud.
Uwaga: aby serwer turn działał na instancji maszyny wirtualnej Google Cloud, pamiętaj o skonfigurowaniu reguły zapory sieciowej maszyny wirtualnej tak, aby zezwalała na ruch na portach TCP i UDP 3478 i 3479.
- Zainstaluj serwer zwrotny:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Zmodyfikuj
/etc/turnserver.conf
dodając następujące wiersze: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
- Zmodyfikuj plik YAML Docker Compose, aby uwzględnić konfigurację TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Dodaj następujące dwie linie środowiska w sekcji emulatora:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Uruchom ponownie usługę emulatora AAOS z konfiguracją kolei. Pamiętaj, aby zastąpić adres IP serwera Turn, nazwę użytkownika i dane uwierzytelniające poniżej własnymi:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up