Bu sayfada, AAOS Emülatörü'nün web hizmeti olarak nasıl çalıştırılacağı ve kullanıcıların uzaktan erişebilmesi için bir web tarayıcısında nasıl çalıştırılacağı açıklanmaktadır. Bu işlem, Google Cloud Compute Engine üzerinden uçtan uca, minimum düzeyde uygulanabilir bir referans sağlar. Bununla birlikte, bu hizmeti dilediğiniz herkese açık veya özel bulut platformunda kullanabilirsiniz.
Amaç
Bu merkezi yapılandırma ve kurulum, AAOS Emulator'a şirketin tamamının, tedarikçi firmaların ve evden çalışan geliştiricilerin erişebilmesini sağlar. Bu sayede AAOS Emulator'u yönetmek ve yeni sürümlere yükseltmek daha verimli hale gelir ve her kullanıcı için yerel makineleri kurmak ve yönetmek için gereken süre ortadan kalkar. 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, aşağıdaki amaçlarla:
- Kullanıcı araştırması, kullanıcı deneyimi incelemesi, müşteri desteği ve eğitim.
- Potansiyel müşterilere ve satış kanallarında gösterilen demolar.
- Uygulamaları (günlük OEM HMI derlemeleri dahil) geniş ölçekte test edin, doğrulayın ve hatta hata ayıklayın. Emulator'u, uygulama geliştirmek için kullanılan test tezgahlarının yerine kullanabilirsiniz.
- OEM müşteri çağrı merkezi temsilcileri, tek tip ve erişimi kolay bir HU kullanıcı arayüzüne sahiptir.
AAOS emülatörünü kullanmanın birçok avantajı vardır:
- Özelleştirilmiş ve bulut tabanlı bir AAOS emülatörü (bulut emülatörü) 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 emülatörün hazır kurulumu.
- Hizmet oluşturucunun bir komutla AAOS AVD'yi başlatmak için kullanabileceği herkese açık AAOS AVD resimleri. Örneğin, iş ortaklarının uyarlayıp uygulayabileceği örnekler olarak herkese açık OEM AVD görüntüleri.
Mimari
Bulut emülatör örneğinin mimarisi aşağıda gösterilmektedir. İlk minimum uygulanabilir hizmetiniz, kendi OEM AVD resimlerinizi ekleyerek çalışır.
Şekil 1. Cloud AVD mimarisi.
Önemli emülatör yapı taşları şunlardır:
burada bulabilirsiniz.Öğe | Amaç |
---|---|
Android Emulator | Emülatör örneği AVD görüntüleri barındırıyor |
Goldfish-webrtc köprüsü | React uygulaması ile AAOS Emulator arasında iletişim sağlayan Linux uygulaması |
android-emulator-webrtc | Emülatör kullanıcı arayüzünü web tarayıcısında görüntülemek için React uygulaması. React, kullanıcı girişi etkinliklerini de yakalayıp sunucuya geri gönderir. |
Android Emulator Kapsayıcı 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 üzere kullanılan Python komut dosyaları. |
Emülatörün erişim izinlerini yönetmek için jeton oluşturur. | |
Sunucuyu döndürme | İstemci ile sunucu arasında WebRTC doğrudan bağlantısı oluşturur. Sunucuyu döndürme seçeneği yalnızca Emulator hizmeti güvenlik duvarları veya proxy'ler arkasında çalışırken gereklidir. |
Elçi | Şunlar için bir proxy hizmeti:
|
Bulut sanal makinesinde emülatör ayarlama
GCP projesi oluşturmak için:
- Google Cloud Console'a gidip Proje Seçin.
- Google Cloud projeniz için faturalandırmanın etkinleştirildiğini onaylamak isterseniz Bir projenin faturalandırmasını etkinleştirme, devre dışı bırakma veya değiştirme başlıklı makaleyi inceleyin.
- API'yi etkinleştirin.
GCE'de Linux sanal makinesi oluşturma
1. İç içe sanallaştırmayı etkinleştirme
Varsayılan olarak, proje, klasör veya kuruluş düzeyinde iç içe yerleştirilmiş sanallaştırmaya izin verilir. Kuruluşunuzdaki bir kullanıcı iç içe yerleştirilmiş sanallaştırmayı devre dışı bırakmadıysa bu özelliği etkinleştirmek için herhangi bir işlem yapmanız gerekmez.
- İç içe 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 diski oluşturma
- Cloud Console'a gidin.
- GCP projesini seçin.
- Gezinme menüsüne gidin ve Compute Engine > Diskler > Disk Oluştur'u seçin.
- Disk adı girin. Örneğin,
ubuntu1804lts
- Bir bölge ve alt bölge seçin. İç içe yerleştirilmiş sanallaştırmayı desteklemek için seçtiğiniz bölgenin ve alt bölgenin Haswell (veya daha yeni) işlemcileri desteklediğinden emin olun. Daha fazla bilgi edinmek için Bölgeler ve Alt Bölgeler başlıklı makaleyi inceleyin.
ubuntu-1804-bionic-v20210211
kaynağının resmini seçin- Uygun bir disk boyutu ayarlayın (100 GB veya daha büyük boyutlar önerilir).
- Disk adı girin. Örneğin,
Şekil 2. Ubuntu önyüklenebilir diski oluşturun.
3. VMX'yi etkinleştirmek için özel lisans anahtarıyla özel bir görüntü oluşturun
- Cloud Console'a gidin.
- Cloud Shell'i açıp aşağıdaki 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ölgesi'ni, diski oluşturduğunuz bölge olarak ayarlayın.
- Disk adını, diski oluşturmak için kullandığınız ada ayarlayın.
Örnek:
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ılı bilgi için İç İçe Sanallaştırma Sanal Makinesi Örneği başlıklı makaleyi inceleyin.
4. Özelleştirilmiş görüntüyü kullanarak sanal makine örneği oluşturma
- Cloud Console'a gidin.
- GCP projesini seçin.
- Gezinme menüsü > Compute Engine > Sanal makine örneği'ne gidin.
Şekil 3. Sanal makine örneği oluşturun.
- Bir örnek adı girin. Örneğin,
aaosemulator
- İstediğiniz makine ailesini ve türünü seçin. Makinenin dört vCPU ve 16 GB (veya daha fazla) bellek içerdiğinden emin olun.
- Intel Cascade Lake (veya sonraki bir sürüm) olacak şekilde CPU platformunu seçin.
- Önyükleme diskini, önceki adımda oluşturulan görüntüyle değiştirin.
- Güvenlik duvarını 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ırma
- Cloud Console'a gidin.
- GCP projesini seçin.
- Gezinme menüsü > Compute Engine > Sanal makine örneği > Güvenlik duvarı kur'a gidin.
Sanal makineye gerekli yazılımları yükleme
- Python 3 ve Python3-env'yi yükleyin:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Android SDK'yı ve ADB'yi yükleyin.
sudo apt install android-sdk
Docker ve Docker-compose'i yüklemek için Docker ve Docker-compose başlıklı makalelere göz atın. Bunları root olmayan kullanıcı olarak çalıştırabileceğinizden emin olun.
- CPU'nun donanım sanallaştırmayı desteklediğini doğrulamak için (komut sıfır olmayan bir sayı döndürmelidir):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Kernel Sanal Makinesi'ni (KVM) yükleyin. KVM'yi yüklemek için:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- KVM'nin çalıştığını doğrulamak için:
Çıkış şu şekilde olmalıdır:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Node.js ve Node Paket Yöneticisi'ni (NPM) yüklemek için:
sudo apt install nodejs npm
Barındırılan kapsayıcıları başlatma
- Yüklemeyi doğrulamak için barındırılan Android Emulator kapsayıcılarını herkese açık depodan çalıştırın. Kapsayıcılarla ilgili ayrıntıları burada bulabilirsiniz.
Artık bu kapsayıcıları oluşturmadan çalıştırabilirsiniz. Örnek:
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 işlem, kapsayıcıyı (yerel olarak mevcut değilse) indirir ve başlatır.
- Kapsayıcı başlatıldığında, ADB'yi yerel bir ana makinede AVD bağlar gibi yapılandırarak cihaza bağlanın. Örnek:
Çıkış şu şekilde olmalıdır:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
AAOS Emülatör hizmetini ayarlama
Emülatör 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 işlem, sanal bir ortamı etkinleştirir ve emu-docker yürütülebilir dosyasını kullanılabilir hale getirir.
Kullanımı hakkında ayrıntılı bilgi edinmek için uygulamayı başlatın:
emu-docker -h
- Docker kapsayıcılarını oluşturmak için lisans sözleşmelerini kabul edin.
- AAOS Emulator Docker container'ını derleyin.
- 7154743 sürümünden sonraki bir emülatör derlemesini indirin. Örnek:
sdk-repo-linux-emulator-7154743.zip
- AAOS emülatör 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 uzak erişim için kullanıcı adını ve şifreyi ayarlayın.
./create_web_container.sh -p user1,passwd1
- AAOS Emulator Web Hizmeti'ni başlatın:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
AAOS emülatör web hizmetini başarıyla başlattınız. Web tarayıcısında erişmek için aşağıdakileri kullanın:
https://<VM_External__IP>
Sorun giderme
Sanal makinenin harici IP'sine bağlantı hatası oluşursa sanal makinenin hem HTTP hem de HTTPS trafiğine izin verecek şekilde ayarlandığından emin olun. Bunu doğrulamak için Temel Apache web sunucusu çalıştırma başlıklı makaleyi inceleyin.
Dönüş sunucusunu ayarlama
İstediğiniz zaman kendi sıra sunucunuzu kullanabilirsiniz. Aşağıda, Google Cloud sanal makine örneğinde bir örnek verilmiştir.
Not: Dönüşüm sunucusunun bir Google Cloud sanal makine örneğinde çalışmasını sağlamak için sanal makine güvenlik duvarı kuralını 3478 ve 3479 numaralı TCP ve UDP bağlantı noktalarında trafiğe izin verecek şekilde yapılandırın.
- coturn sunucusunu yükleyin:
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ğerini 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 çeviri sunucusu IP'sini, kullanıcı adını ve kimlik bilgilerini kendi bilgilerinizle 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