Bu sayfada AAOS Emulator'un bir Web Hizmeti olarak nasıl çalıştırılacağı ve kullanıcıların uzaktan erişebilmesini sağlamak için bir web tarayıcısında nasıl çalıştırılacağı açıklanmaktadır. Bunu yapmak, Google Cloud Compute Engine aracılığıyla uçtan uca, minimum düzeyde uygulanabilir bir referans sağlar. Bununla birlikte, bu hizmeti istediğiniz herhangi bir genel veya özel bulut platformunda kullanabilirsiniz.
Amaç
Bu merkezi yapılandırma ve kurulum, AAOS Emulator'u tüm şirket, tedarikçi ve evden çalışan geliştiriciler için erişilebilir hale getirir. Bunu yapmak, AAOS Öykünücüsünü yönetmeyi ve yeni sürümlere yükseltmeyi daha verimli hale getirir ve bireysel kullanıcılar için yerel makineleri kurmak ve yönetmek için gereken süreyi ortadan kaldırır. Bu çözüm, donanım kaynaklarının kullanımını optimize eder ve daha düşük maliyetli bir uygulama geliştirme ortamı sağlar. Örneğin:
- Kullanıcı araştırması, kullanıcı deneyimi incelemesi, müşteri desteği ve eğitim.
- Potansiyel müşterilere ve satış kanallarında demolar.
- Uygulamaları (günlük OEM HMI derlemeleri dahil) geniş ölçekte test edin, doğrulayın ve hatta hata ayıklayın. Emülatörü, uygulama geliştirmek için kullanılan test tezgahlarının yerine geçecek bir araç olarak düşünün.
- OEM müşteri çağrı merkezi temsilcileri tek tip, erişimi kolay bir HU kullanıcı arayüzüne sahiptir.
AAOS Emülatörünü kullanmanın faydaları çoktur:
- Özelleştirilmiş ve bulut tabanlı bir AAOS Emulator (bulut emülatörü) oluşturmak için bir kurulum komut dosyası kullanın.
- VM örnekleri için özelleştirilmiş bir AAOS Cloud Emulator görüntüsü oluşturun:
- Bulut tabanlı bir emülatörün hazır kurulumu.
- Hizmet oluşturucunun bir komutla bir AAOS AVD başlatması için kullanabileceği genel AAOS AVD görüntüleri. Örneğin, iş ortaklarının uyarlaması ve uygulaması için örnek olarak herkese açık OEM AVD görüntüleri.
Mimari
Bulut emülatör örneğinin mimarisi aşağıda gösterilmiştir. Minimum düzeyde uygulanabilir ilk hizmetiniz, kendi OEM AVD görsellerinizi ekleyerek çalışacaktır.
Şekil 1. Bulut AVD mimarisi.
Temel emülatör yapı taşları şunlardır:
Öğe | Amaç |
---|---|
Android Emülatörü | Emülatör örneği AVD görüntülerini barındırır |
Japon balığı-webrtc köprüsü | Reaksiyon uygulaması ile AAOS Emülatörü arasında iletişim sağlamak için Linux uygulaması |
android-emülatör-webrtc | Emulator kullanıcı arayüzünü bir web tarayıcısında görüntülemek için uygulamayı reaksiyona sokun . React ayrıca kullanıcı giriş olaylarını yakalar ve bunları sunucuya geri gönderir. |
Android Emülatörü Konteyner Komut Dosyaları | Yukarıdaki yazılım modülleri için Docker görüntülerini ve kapsayıcılarını yönetmek ve oluşturmak için Python komut dosyaları. |
Emülatörün erişim izinlerini yönetmek için belirteçler oluşturur. | |
Sunucuyu çevir | İstemci ile sunucu arasında WebRTC doğrudan bağlantısı kurar. Sunucuyu çevirme yalnızca Emulator hizmeti güvenlik duvarlarının veya proxy'lerin arkasında çalışırken gereklidir. |
Elçi | Şunlara yönelik bir proxy hizmeti:
|
Bulut sanal makinesinde öykünücüyü ayarlama
GCP projesi oluşturmak için:
- Google Cloud Console'a gidin ve Bir Proje Seçin .
- Google Cloud projenizde faturalandırmanın etkinleştirildiğini doğrulamak için Proje için faturalandırmayı etkinleştirme, devre dışı bırakma veya değiştirme konusuna bakın.
- API'yi etkinleştirin .
GCE'de Linux VM oluşturma
1. İç içe sanallaştırmayı etkinleştirin
Varsayılan olarak iç içe sanallaştırmaya proje, klasör veya kuruluş düzeyinde izin verilir. Kuruluşunuzdaki bir kişi iç içe sanallaştırmayı devre dışı bırakmadığı sürece, onu etkinleştirmek için herhangi bir şey yapmanıza gerek yoktur.
- Yuvalanmış Sanallaştırmaya izin verildiğini onaylamak için gcloud komut satırı aracını kullanın:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Ubuntu-1804-lts önyüklenebilir bir disk oluşturun
- Bulut Konsolu'na gidin.
- GCP projesini seçin.
- Gezinme menüsüne gidin ve Compute Engine > Diskler > Disk Oluştur öğesini seçin.
- Bir disk adı girin. Örneğin
ubuntu1804lts
- Bir Bölge ve Bölge seçin. İç İçe Sanallaştırmayı desteklemek için seçtiğiniz Bölge ve Bölgenin Haswell (veya üzeri) işlemcileri desteklediğinden emin olun. Daha fazla bilgi edinmek için Bölgeler ve Bölgeler'e bakın.
-
ubuntu-1804-bionic-v20210211
kaynak görüntüsünü seçin - Uygun bir disk boyutu ayarlayın (100 GB veya daha fazlası önerilir).
- Bir disk adı girin. Örneğin
Şekil 2. Ubuntu önyüklenebilir diski oluşturun.
3. VMX'i etkinleştirmek için özel lisans anahtarıyla özel bir görüntü oluşturun
- Bulut Konsolu'na gidin.
- Bir Cloud Shell açın ve şu komutu kullanın:
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"
- Bir Resim adı girin. Örneğin,
aaos-emulator-image
- Disk Zone'u diski oluşturduğunuz bölgeye ayarlayın.
- Disk adını, diski oluşturmak için kullandığınız adla ayarlayın.
Örneğin:
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"
- Bir Resim adı girin. Örneğin,
Ayrıntılar için bkz. İç İçe Sanallaştırma Sanal Makine Örneği .
4. Özelleştirilmiş görüntüyü kullanarak bir VM örneği oluşturun
- Bulut Konsolu'na gidin.
- GCP projesini seçin.
- Gezinme Menüsü > Compute Engine > VM örneğine gidin.
Şekil 3. Bir VM örneği oluşturun.
- Bir örnek adı girin. Örneğin,
aaosemulator
- İstediğiniz makine ailesini ve tipini seçin. Makinenin dört vCPU ve 16 GB bellek (veya daha fazla) içerdiğinden emin olun.
- CPU platformunu Intel Cascade Lake (veya üzeri) olarak seçin.
- Önyükleme diskini önceki adımda oluşturulan görüntüyle değiştirin.
- Güvenlik Duvarını şunun için etkinleştirin:
- HTTP trafiğine izin ver
- HTTPS trafiğine izin ver
5. Güvenlik duvarını 80 ve 443 numaralı bağlantı noktalarını açacak şekilde yapılandırın
- Bulut Konsolu'na gidin.
- GCP projesini seçin.
- Gezinme Menüsü > Compute Engine > VM örneği > Güvenlik duvarı kuralını ayarla'ya gidin.
Gerekli yazılımı VM'ye yükleyin
- Python 3 ve Python3-env'yi yükleyin:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Yolda bulunan Android SDK'yı ve ADB'yi yükleyin.
sudo apt install android-sdk
Docker ve Docker-compose'u yüklemek için bkz. Docker ve Docker-compose . Bunları root olmayan kullanıcı olarak çalıştırabildiğinizden emin olun.
- CPU'nun donanım sanallaştırmasını desteklediğini doğrulamak için (komut sıfırdan farklı bir sayıyla sonuçlanmalıdır):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Çekirdek Sanal Makinesini (KVM) yükleyin. KVM'yi yüklemek için şunu çalıştırın:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- KVM'nin çalıştığını doğrulamak için:
sudo apt install cpu-checker kvm-ok
Çıktı şöyle olmalıdır:INFO: /dev/kvm exists KVM acceleration can be used
- Node.js ve Node Packet Manager'ı (NPM) yüklemek için:
sudo apt install nodejs npm
Barındırılan kapsayıcıları başlatın
- Kurulumu doğrulamak için, barındırılan Android Emulator kapsayıcılarını genel depodan çalıştırın. Konteynerlerle ilgili detayları burada bulabilirsiniz. Artık bu konteynerleri oluşturmadan çalıştırabilirsiniz. Örneğin:
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
Bu, kabı aşağı çeker (yerel olarak mevcut değilse) ve onu başlatır.
- Kap başlatıldığında, ADB'yi, bir AVD'yi yerel bir ana bilgisayara bağlarken olduğu gibi yapılandırarak cihaza bağlanın. Örneğin:
adb connect localhost:5555 adb devices
Çıktı şöyle olmalıdır:List of devices attached localhost:5555 device
AAOS Emulator hizmetini kurma
Emulator hizmetini ayarlamak için:
- Android Emulator Docker kapsayıcı komut dosyasını yükleyin:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Bu, sanal ortamı etkinleştirir ve yürütülebilir emu-docker'ı kullanılabilir hale getirir. Kullanımı hakkında ayrıntılı bilgi almak için başlatın:
emu-docker -h
- Docker kapsayıcılarını oluşturmak için lisans sözleşmelerini kabul edin.
- AAOS Emulator Docker kapsayıcısını oluşturun.
- 7154743 sürümünden sonraki bir öykünücü derlemesini indirin. Örneğin:
sdk-repo-linux-emulator-7154743.zip
- AAOS öykünücüsü sistem görüntüsünü indirin. Örneğin,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Web Kapsayıcılarını oluşturun ve uzaktan erişim için kullanıcı adı ve şifreyi ayarlayın.
./create_web_container.sh -p user1,passwd1
- AAOS Emulator Web Hizmetini başlatın:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
AAOS Emulator Web Hizmetini başarıyla başlattınız! Bir web tarayıcısından erişmek için aşağıdakileri kullanın:
https://<VM_External__IP>
Sorun giderme
VM harici IP'sine bağlantı hatası oluşursa VM'nin hem HTTP hem de HTTPS trafiğine izin verecek şekilde ayarlandığından emin olun. Bunu doğrulamak için bkz. Temel bir Apache web sunucusunu çalıştırma .
Dönüş sunucusunu ayarlama
Her zaman kendi dönüş sunucunuzu kullanabilirsiniz. Aşağıda Google Cloud VM örneğindeki bir örnek verilmiştir.
Not: Dönüş sunucusunun bir Google Cloud VM örneğinde çalışmasını sağlamak için VM güvenlik duvarı kuralını TCP ve UDP bağlantı noktaları 3478 ve 3479'daki trafiğe izin verecek şekilde yapılandırdığınızdan emin olun.
- Coturn sunucusunu kurun:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Aşağıdaki satırları ekleyerek
/etc/turnserver.conf
değiştirin: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
- Docker Compose YAML dosyasını TURN yapılandırmasını içerecek şekilde değiştirin:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Emülatör bölümüne aşağıdaki iki ortam satırını ekleyin:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- AAOS Emulator hizmetini dönüş yapılandırmasıyla yeniden başlatın. Aşağıdaki dönüş sunucusu IP'sini, kullanıcı adını ve kimlik bilgilerini kendi IP'nizle değiştirdiğinizden emin olun:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up