Bu makalede, AAOS Öykünücüsünün bir Web Hizmeti olarak nasıl çalıştırılacağı ve kullanıcılara uzaktan erişilebilmesi için bir web tarayıcısında nasıl çalıştırılacağı anlatılmaktadı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'ı 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, amaçlar iç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) uygun ölçekte test edin, doğrulayın ve hatta hata ayıklayın. Emulator'ı, uygulama geliştirmek için kullanılan test tezgahlarının yerine bir alternatif olarak düşünün.
- OEM müşteri çağrı merkezi temsilcilerinin tek tip, erişimi kolay bir HU UI'si vardır.
AAOS Öykünücüsünü kullanmanın faydaları çoktur:
- Özelleştirilmiş ve bulut tabanlı bir AAOS Öykünücüsü (bulut öykünücüsü) oluşturmak için bir kurulum komut dosyası kullanın.
- Sanal makine örnekleri için özelleştirilmiş bir AAOS Cloud Emulator görüntüsü oluşturun:
- Bulut tabanlı bir öykünücünün hazır kurulumu.
- Bir komutla bir AAOS AVD başlatmak için hizmeti oluşturanın kullanabileceği genel AAOS AVD görüntüleri. Örneğin, ortakların uyarlaması ve uygulaması için örnekler olarak genel OEM AVD görüntüleri.
Mimari
Bulut öykünücüsü örneğinin mimarisi aşağıda gösterilmiştir. Minimum düzeyde uygulanabilir ilk hizmetiniz, kendi OEM AVD görüntülerinizi ekleyerek çalışacaktır.
Şekil 1. Bulut AVD mimarisi
Temel öykünücü 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ü | Tepki uygulaması ile AAOS Emulator arasında iletişim sağlamak için Linux uygulaması |
android-emülatör-webrtc | Emülatör kullanıcı arayüzünü bir web tarayıcısında görüntülemek için uygulama tepki verin . React ayrıca kullanıcı girdi olaylarını yakalar ve bunları sunucuya geri gönderir. |
Android Emulator Konteyner Komut Dosyaları | Yukarıdaki yazılım modülleri için Docker görüntüleri ve kapsayıcılarını yönetmek ve oluşturmak için Python komut dosyaları. |
JWT Hizmeti (JSON Web Simgesi hizmeti) | Öykünücünün erişim izinlerini yönetmek için belirteçler üretir. |
sunucuyu çevir | İstemci ve sunucu arasında bir WebRTC doğrudan bağlantısı kurar. Turn server, yalnızca Emulator hizmeti güvenlik duvarları veya proxy'lerin arkasında çalışırken gereklidir. |
elçi | Şunlar için bir proxy hizmeti:
|
Bir bulut sanal makinesinde öykünücü kurma
Bir GCP projesi oluşturmak için:
- Google Cloud Console'a gidin ve Bir Proje Seçin .
- Google Cloud projeniz için faturalandırmanın etkinleştirildiğini onaylamak için Bir proje için faturalandırmayı etkinleştirme, devre dışı bırakma veya değiştirme konusuna bakın.
- API'yi etkinleştirin .
GCE'de bir Linux sanal makinesi oluşturun
1. İç içe sanallaştırmayı etkinleştirin
Varsayılan olarak proje, klasör veya kuruluş düzeyinde iç içe sanallaştırmaya izin verilir. Kuruluşunuzdan biri iç içe sanallaştırmayı devre dışı bırakmadıkça, etkinleştirmek için hiçbir şey yapmanız gerekmez.
- İç İçe Sanallaştırmaya izin verildiğini doğrulamak 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. Bir Ubuntu-1804-lts önyüklenebilir disk oluşturun
- Bulut Konsolu'na gidin.
- GCP projesini seçin.
- Gezinme menüsü > Compute Engine > Diskler > Disk Oluştur'a gidin.
- Bir disk adı sağlayın. Ö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 üstü) işlemcileri desteklediğinden emin olun. Daha fazla bilgi edinmek için Bölgeler ve Bölgeler bölümüne bakın.
-
ubuntu-1804-bionic-v20210211
kaynak görüntüsünü seçin - Uygun bir disk boyutu ayarlayın (100 GB veya daha büyük önerilir).
- Bir disk adı sağlayın. Örneğin,
Şekil 1. 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 Bölgesini, diski oluşturduğunuz bölgeye ayarlayın.
- Disk adını, diski oluşturmak için kullandığınız ada 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 VM Örneği .
4. Özelleştirilmiş görüntüyü kullanarak bir sanal makine örneği oluşturun
- Bulut Konsolu'na gidin.
- GCP projesini seçin.
- Gezinme Menüsü > Compute Engine > Sanal Makine örneği'ne gidin.
Şekil 1. 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.
- Intel Cascade Lake (veya üstü) olacak CPU platformunu seçin.
- Önyükleme diskini önceki adımda oluşturulan görüntüyle değiştirin.
- Güvenlik Duvarını şunlar 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ı ayarla'ya gidin.
Sanal makineye gerekli yazılımı yükleyin
- Python 3 ve Python3-env'i yükleyin:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Yolda bulunan Android SDK 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ı ile sonuçlanmalıdır):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Çekirdek Sanal Makinesini (KVM) kurun. KVM'yi kurmak 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ı şu şekilde 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
- Yüklemeyi doğrulamak için, genel depodan barındırılan Android Emulator kapsayıcılarını çalıştırın. Konteynerlerle ilgili detayları burada bulabilirsiniz . Artık bu kapsayıcıları 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 başlatır.
- Kapsayıcı başlatıldığında, yerel bir ana bilgisayara bir AVD'yi bağlamayla aynı şekilde ADB'yi 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 Öykünücü hizmetini ayarlayın
Emülatör hizmetini kurmak 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 bir 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 parola belirleyin.
./create_web_container.sh -p user1,passwd1
- AAOS Öykünücü Web Hizmetini başlatın:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Bir AAOS Öykünücü 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 bir 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 sunucusu çalıştırma .
Turn sunucusunu kurun
Her zaman kendi sıra sunucunuzu kullanabilirsiniz. Aşağıda, bir Google Cloud VM örneğine ilişkin 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ı, 3478 ve 3479 numaralı TCP ve UDP bağlantı noktalarında 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
- Öykünücü 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 kendinizle 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