Na tej stronie dowiesz się, jak uruchomić emulator AAOS jako usługę internetową i uruchomić go przeglądarki internetowej, aby umożliwić użytkownikom zdalny dostęp do niej. Dzięki temu uzyskasz całościowy, jak najmniej uzasadnionego odniesienia przy użyciu Google Cloud. Compute Engine. Możesz jednak korzystać z tej usługi na dowolnej platformie w chmurze publicznej lub prywatnej.
Cel
Ta scentralizowana konfiguracja sprawia, że emulator AAOS jest dostępny dla całej firmy, z dostawcami usług i programistami pracującymi z domu. Zwiększa to efektywność zarządzania i uaktualniania dzięki emulatorowi AAOS do nowych wersji, co pozwala skrócić czas potrzebny na skonfigurowanie komputerów lokalnych i zarządzanie nimi. dla poszczególnych użytkowników. To rozwiązanie optymalizuje wykorzystanie zasobów sprzętowych i umożliwia tańsze środowisko tworzenia aplikacji. Przykłady:
- Badania opinii użytkowników, weryfikowanie wrażeń użytkowników, obsługa klienta i szkolenia.
- Prezentacje dla potencjalnych klientów i w kanałach sprzedaży.
- Testuj, weryfikuj, a nawet debuguj aplikacje (w tym codzienne kompilacje HMI OEM) na dużą skalę. Rozważ emulatora, który zastępuje inne platformy testowe do tworzenia aplikacji.
- Pracownicy centrum obsługi klienta OEM mają jednolity i łatwy dostęp do interfejsu HU.
Używanie emulatora AAOS ma wiele zalet:
- Użyj skryptu konfiguracji, aby utworzyć dostosowany, działający w chmurze emulator AAOS (emulator chmury).
- Utwórz niestandardowy obraz emulatora Cloud AAOS dla instancji maszyn wirtualnych:
- Gotowe do skonfigurowania emulatora działającego w chmurze.
- Publiczne obrazy AVD AAOS dostępne dla twórcy usługi w celu uruchomienia AAOS AVD polecenia. Dotyczy to na przykład publicznych obrazów AVD OEM, które partnerzy mogą dostosowywać i stosować.
Architektura
Poniżej przedstawiono architekturę emulatora chmury. Twoje pierwsze aby usługa była jak minimalnie realna, wystarczy dodać własne obrazy AVD OEM.
Rysunek 1. Architektura Cloud AVD.
Kluczowe elementy składowe emulatora to:
tutaj.Produkt | Cel |
---|---|
Emulator Androida | Instancja emulatora hostuje obrazy AVD |
Most złoty w internecie | Aplikacja na Linuksa zapewniająca komunikację między aplikacją reakcji a emulatorem AAOS |
emulator-webrtc | React, aby wyświetlić interfejs emulatora w internecie. przeglądarki. React rejestruje też zdarzenia wejściowe użytkownika i wysyła je z powrotem do serwera. |
Skrypty kontenera emulatora Androida | Skrypty w języku Python służące do tworzenia obrazów i kontenerów Dockera oraz zarządzania nimi na potrzeby powyższych modułów oprogramowania. |
Generuje tokeny do zarządzania uprawnieniami dostępu emulatora. | |
Włącz serwer | Nawiązuje bezpośrednie połączenie WebRTC między klientem a serwerem. Włącz serwer jest wymagane tylko wtedy, gdy usługa emulatora działa za zaporami sieciowymi lub serwerami proxy. |
Envoy | Usługa pośrednicząca w:
|
Konfigurowanie emulatora w maszynie wirtualnej w chmurze
Aby utworzyć projekt GCP:
- Otwórz konsolę Google Cloud Wybierz projekt.
- Aby sprawdzić, czy w projekcie Google Cloud włączone są płatności, zobacz Włączanie, wyłączanie i zmienianie rozliczeń w projekcie .
- włączyć interfejs API.
Tworzenie w GCE maszyny wirtualnej z systemem Linux
1. Włącz zagnieżdżoną wirtualizację
Domyślnie zagnieżdżona wirtualizacja jest dozwolona na poziomie projektu, folderu lub organizacji. Chyba że ktoś w organizacji wyłączono zagnieżdżoną wirtualizację, nie musisz nic robić, aby go włączyć.
- użyj narzędzia wiersza poleceń gcloud,
aby potwierdzić, że zagnieżdżona wirtualizacja jest dozwolona:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Tworzenie dysku rozruchowego Ubuntu-1804-LTs
- Otwórz Konsola Cloud.
- Wybierz projekt GCP.
- Otwórz menu nawigacyjne i wybierz Compute Engine > Dyski >
Utwórz dysk.
- Podaj nazwę dysku. Na przykład:
ubuntu1804lts
- Wybierz region i strefę. Aby obsługiwać zagnieżdżoną wirtualizację, upewnij się, że region i wybrana strefa obsługują procesory Haswell (lub nowsze). Więcej informacji: Regiony i strefy.
- Wybierz obraz źródłowy produktu
ubuntu-1804-bionic-v20210211
- Ustaw odpowiedni rozmiar dysku (zalecane 100 GB lub więcej).
- Podaj nazwę dysku. Na przykład:
Rysunek 2. Utwórz dysk rozruchowy Ubuntu.
3. Utwórz obraz niestandardowy ze specjalnym kluczem licencyjnym, aby włączyć VMX
- Otwórz konsolę Cloud.
- Otwórz Cloud Shell i użyj tego 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"
- Wpisz nazwę obrazu. Na przykład:
aaos-emulator-image
- Ustaw strefę dysku na strefę, w której został utworzony dysk.
- Wpisz nazwę dysku użytą do jego utworzenia.
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"
- Wpisz nazwę obrazu. Na przykład:
Więcej informacji: Maszyna wirtualna Nested Virtualization
4. Tworzenie instancji maszyny wirtualnej przy użyciu niestandardowego obrazu
- Otwórz konsolę Cloud.
- Wybierz projekt GCP.
- Wybierz Menu nawigacyjne > Compute Engine > maszynie wirtualnej.
Rysunek 3. utworzyć instancję maszyny wirtualnej,
- Wpisz nazwę instancji. Na przykład:
aaosemulator
- Wybierz odpowiednią rodzinę i typ maszyn. Sprawdź, czy maszyna zawiera 4 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 otworzyć port 80 i 443
- Otwórz konsolę Cloud.
- wybierz projekt GCP.
- Wybierz Menu nawigacyjne > Compute Engine > Instancja maszyny wirtualnej > Skonfiguruj regułę zapory sieciowej.
Zainstaluj wymagane oprogramowanie w maszynie wirtualnej
- Zainstaluj Python 3 i Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Zainstaluj pakiet SDK do Androida.
i ADB dostępne na ścieżce.
sudo apt install android-sdk
Aby zainstalować Dockera i Docker-compose, zapoznaj się z artykułem Docker Docker-compose. Upewnij się, że możesz biec jako użytkownik inny niż root.
- Aby sprawdzić, czy procesor obsługuje wirtualizację sprzętową (polecenie powinno zwrócić polecenie
liczba różna od zera):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Zainstaluj maszynę wirtualną jądra. Aby zainstalować KVM, uruchom polecenie:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Aby sprawdzić, czy KVM działa:
Dane wyjściowe powinny wyglądać tak:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Aby zainstalować środowiska Node.js i menedżera pakietów Node.js (NPM):
sudo apt install nodejs npm
Uruchom hostowane kontenery
- Aby sprawdzić instalację, uruchom hostowane kontenery emulatora Androida z publicznych źródeł.
z repozytorium. Szczegółowe informacje o kontenerach znajdziesz
tutaj.
Teraz możesz uruchamiać te kontenery bez ich tworzenia. 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 pobranie kontenera (jeśli nie jest on dostępny lokalnie) i jego uruchomienie.
- Po uruchomieniu kontenera połącz się z urządzeniem, konfigurując ADB w ten sam sposób
jak podłączenie AVD na hoście lokalnym. Na przykład:
Dane wyjściowe powinny wyglądać tak:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Konfigurowanie usługi emulatora AAOS
Aby skonfigurować usługę emulatora:
- Zainstaluj skrypt kontenera Dockera emulatora Androida:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Spowoduje to aktywowanie środowiska wirtualnego i udostępnienie wykonywalnego emu-dockera.
Aby uzyskać szczegółowe informacje o jego użyciu, uruchom go:
emu-docker -h
- Aby utworzyć kontenery Dockera, zaakceptuj umowy licencyjne.
- Utwórz kontener Dockera emulatora AAOS.
- Pobierz kompilację emulatora późniejszą niż wersja 7154743. Na przykład:
sdk-repo-linux-emulator-7154743.zip
- Pobierz obraz systemu emulatora AAOS. 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 oraz 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
Usługa internetowa emulatora AAOS została uruchomiona. Użyj opcji poniżej, aby uzyskać dostęp w przeglądarce:
https://<VM_External__IP>
Rozwiązywanie problemów
Jeśli wystąpi błąd połączenia z zewnętrznym adresem IP maszyny wirtualnej, sprawdź, czy konfiguracja maszyny wirtualnej zezwala na to zarówno ruch HTTP, jak i HTTPS. Aby to sprawdzić, zobacz Uruchomienie podstawowego serwera WWW Apache.
Konfiguracja serwera zakrętu
Zawsze możesz użyć własnego serwera turowego. Poniżej znajdziesz przykład na maszynie wirtualnej Google Cloud instancji.
Uwaga: aby serwer obsługi działał w instancji maszyny wirtualnej Google Cloud, skonfigurować regułę zapory sieciowej maszyny wirtualnej tak, aby zezwalała na ruch na portach TCP i UDP 3478 oraz 3479.
- Zainstaluj serwer coturn:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Zmodyfikuj
/etc/turnserver.conf
, dodając te 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 tak, aby zawierał konfigurację TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Dodaj w sekcji emulatora te 2 wiersze środowiska:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Ponownie uruchom usługę emulatora AAOS z konfiguracją Turn.
Pamiętaj, aby zastąpić poniższy adres IP, nazwę użytkownika i dane logowania własnego serwera skrętu:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up