Kendi bulut emülatörünüzü oluşturun

Bu sayfada, AAOS Emülatör'ün Web Hizmeti olarak nasıl çalıştırılacağı ve bir web tarayıcısı kullanarak o yere kullanıcıların uzaktan erişebilmesini sağlar. Bu sayede uçtan uca Google Cloud aracılığıyla minimum uygulanabilir referans Compute Engine Bununla birlikte, bu hizmeti dilediğiniz herkese açık veya özel bulut platformunda kullanabilirsiniz.

Amaç

Bu merkezi yapılandırma ve kurulum, AAOS Emülatör'ü tüm şirket için erişilebilir kılar, tedarikçiler ve evden çalışan geliştiriciler. Bu, yönetim ve yeni sürüme geçiş işlemlerini daha verimli hale getirir Böylece AAOS Emülatörü yeni sürümlere geçirebilir ve yerel makineleri kurup yönetmek için gereken zamandan tasarruf edebilirsiniz. kullanıcılara göre değişiyor. Bu çözüm, donanım kaynaklarının kullanımını optimize eder ve düşük maliyetli uygulama geliştirme ortamı sağlar. Örneğin, şu 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ına yönelik demolar.
  • Uygulamaları (günlük OEM HMI derlemeleri dahil) geniş ölçekte test edin, doğrulayın ve hatta hata ayıklayın. Dikkatlice test banklarının uygulama geliştirmek için kullandığı bir emülatör görevi görür.
  • OEM müşteri çağrı merkezi aracılarının tek tip ve kolayca erişilebilen bir HU kullanıcı arayüzü vardır.

AAOS Emülatörü kullanmanın sayısız avantajı vardır:

  • Özelleştirilmiş ve bulut tabanlı bir AAOS Emülatörü oluşturmak için kurulum komut dosyası kullanın (bulut emülatörü).
  • Sanal makine örnekleri için özelleştirilmiş bir AAOS Cloud Emulator görüntüsü derleyin:
    • Bulut tabanlı bir emülatörün kurulumu için hazır.
    • Hizmeti oluşturan kullanıcının AAOS AVD'yi başlatmak için kullanabileceği, herkese açık AAOS AVD görüntüleri komut verebilirsiniz. Örneğin, iş ortaklarının uyarlayıp uygulayabilmesi için örnek olarak herkese açık OEM AVD resimlerini kullanabilirsiniz.

Mimari

Cloud emülatör örneğinin mimarisi aşağıda gösterilmektedir. İlk minimum uygulanabilir hizmet, kendi OEM AVD resimlerinizi ekleyerek çalışır.

Şekil 1. Cloud AVD mimarisi

Temel emülatör yapı taşları:

burada bulabilirsiniz.
Öğe Amaç
Android Emülatör Emülatör örneği AVD görüntüleri barındırır
Japon balığı-webrtc köprüsü Tepki uygulaması ile AAOS Emülatörü arasında iletişimi sağlayan Linux uygulaması
android-emulator-webrtc Emülatör kullanıcı arayüzünü web'de görüntülemek için React uygulaması emin olun. React ayrıca kullanıcı giriş etkinliklerini yakalar ve sunucuya geri gönderir.
Android Emulator Container Komut Dosyaları Yukarıdaki yazılım modülleri için Docker görüntülerini ve container'larını yönetmek ve oluşturmak üzere kullanılan Python komut dosyaları.
Emülatörün erişim izinlerini yönetmek için jetonlar oluşturur.
Sunucuyu çevir İstemci ile sunucu arasında WebRTC doğrudan bağlantısı oluşturur. Sunucuyu çevir yalnızca Emulator hizmeti güvenlik duvarları veya proxy'ler arkasında çalışıyorsa gereklidir.
Envoy

Aşağıdakileri yapmak için bir proxy hizmeti:

  • Kendinden imzalı bir sertifika kullanarak HTTPS sağlayın.
  • Bağlantı noktası 80'deki (http) trafiği 443 (https) bağlantı noktasına yönlendirin.
  • Emülatör için gRPC proxy'si olarak görev yapar.
  • Emülatör gRPC uç noktasına erişime izin vermek için jetonları doğrulayın.
  • Diğer istekleri, React uygulamasını barındıran Nginx bileşenine yönlendirin.

Bulut sanal makinesinde emülatör ayarlama

GCP projesi oluşturmak için:

  1. Google Cloud Console'a gidin ve Proje seçin.
  2. Google Cloud projenizde faturalandırmanın etkinleştirildiğini onaylamak için şuraya bakın: Proje için faturalandırmayı etkinleştirme, devre dışı bırakma veya değiştirme ziyaret edin.
  3. API'yi etkinleştirin.

GCE'de Linux sanal makinesi oluşturma

1. İç içe sanallaştırmayı etkinleştir

Varsayılan olarak proje, klasör veya kuruluş düzeyinde iç içe yerleştirilmiş sanallaştırmaya izin verilir. Kuruluşunuzdaki çalışanlardan biri iç içe sanallaştırmayı devre dışı bıraktı, etkinleştirmek için herhangi bir şey yapmanız gerekmez.

  1. gcloud komut satırı aracını kullanma Nested Sanallaştırma'ya izin verildiğini onaylamak için:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Ubuntu-1804-lts önyüklenebilir bir disk oluşturun

  1. Git Cloud Console.
  2. GCP projesini seçin.
  3. Gezinme menüsüne gidip Compute Engine > Diskler > Disk Oluştur'u tıklayın.
    1. Disk adı girin. Örneğin, ubuntu1804lts
    2. Bölge ve Alt Bölge seçin. İç içe sanallaştırmanın desteklenmesi için Bölge ve seçtiğiniz alt bölge, Haswell (veya üzeri) işlemcileri destekler. Daha fazla bilgi edinmek için bkz. Bölgeler ve Alt Bölgeler.
    3. ubuntu-1804-bionic-v20210211 adlı dosyanın kaynak resmini seçin
    4. Uygun bir disk boyutu ayarlayın (100 GB veya daha büyük olması önerilir).

Şekil 2. Ubuntu önyüklenebilir diski oluşturun.

3. VMX'i etkinleştirmek için özel lisans anahtarına sahip özel bir görüntü oluşturun

  1. Cloud Console'a gidin.
  2. Bir Cloud Shell açın ve 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"
    
    • Resim adı girin. Örneğin, aaos-emulator-image
    • Disk Alt Bölgesi'ni, diski oluşturduğunuz alt bölgeye 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"
    

Ayrıntılar için bkz. İç İçe Yerleştirilmiş Sanallaştırma Sanal Makine Örneği.

4. Özelleştirilmiş görüntüyü kullanarak sanal makine örneği oluşturma

  1. Cloud Console'a gidin.
  2. GCP projesini seçin.
  3. Gezinme Menüsü'ne gidin > Compute Engine > Sanal makine örneği

    Şekil 3. Sanal makine örneği oluşturun.

  4. Bir örnek adı girin. Örneğin, aaosemulator
  5. İstediğiniz makine ailesini ve türünü seçin. Makinede dört vCPU ve 16 GB (veya daha fazla) bellek.
  6. CPU platformunu Intel Cascade Lake (veya üzeri) olacak şekilde seçin.
  7. Önyükleme diskini önceki adımda oluşturulan görüntüyle değiştirin.
  8. Güvenlik Duvarını şunlar için etkinleştir:
    • 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

  1. Cloud Console'a gidin.
  2. GCP projesini seçin.
  3. Gezinme Menüsü'ne gidin > Compute Engine > Sanal makine örneği > Güvenlik duvarı kuralı ayarlayın.

Sanal makinede gerekli yazılımı yükleyin

  1. Python 3 ve Python3-env'yi yükleyin:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. Android SDK'sını yükleyin ve ADB'yi bulmanız gerekir.
    sudo apt install android-sdk
    

    Docker ve Docker-compose'u yüklemek için bkz. Docker ve Docker-compose. Koşabileceğinizden emin olun bunları kök olmayan kullanıcı olarak ayarlayın.

  3. CPU'nun donanım sanallaştırmayı desteklediğini onaylamak için (komutun, sıfır olmayan bir sayı):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Kernel Sanal Makinesi'ni (KVM) kurun. KVM'yi yüklemek için şu komutu çalıştırın:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. KVM'nin çalıştığını doğrulamak için:
    sudo apt install cpu-checker
    kvm-ok
    
    Çıkış şu şekilde olmalıdır:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. Node.js'yi ve Düğüm Paket Yöneticisi'ni (NPM) yüklemek için:
    sudo apt install nodejs npm
    

Barındırılan kapsayıcıları başlatma

  1. Yüklemeyi doğrulamak için barındırılan Android Emulator container'larını herkesten çalıştırın depodur. Kapsayıcılarla ilgili ayrıntıları burada bulabilirsiniz. Artık bu container'ları derlemeden ç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 komut, kapsayıcıyı aşağı çeker (yerel olarak kullanılabilir değilse) ve başlatır.

  2. Kapsayıcı başlatıldığında, ADB'yi aynı şekilde yapılandırarak cihaza bağlanın Bu, yerel bir ana makinede ortalama görüntüleme süresi (AVD) oluşturmaktır. Örnek:
    adb connect localhost:5555
    adb devices
    
    Çıkış şu şekilde olmalıdır:
    List of devices attached
    localhost:5555 device
    

AAOS Emülatör hizmetini ayarlama

Emulator hizmetini ayarlamak için:

  1. Android Emulator Docker container komut dosyasını yükleyin:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. Böylece sanal bir ortam etkinleştirilir ve yürütülebilir emu-docker kullanılabilir hale gelir. Kullanımı hakkında ayrıntılı bilgi edinmek için uygulamayı başlatın:
    emu-docker -h
    
  3. Docker container'ları oluşturmak için lisans sözleşmelerini kabul edin.
  4. AAOS Emülatör Docker container'ını oluşturun.
  5. 7154743 sürümünden sonraki bir emülatör derlemesini indirin. Örnek:
    sdk-repo-linux-emulator-7154743.zip
    
  6. 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>
    
  7. Web kapsayıcılarını oluşturun ve uzaktan erişim için kullanıcı adı ile şifre belirleyin.
    ./create_web_container.sh -p user1,passwd1
    
  8. AAOS Emülatör 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 Hizmeti'ni başarıyla başlattınız. Erişim için şunları kullanın: kullanarak:

https://<VM_External__IP>

Sorun giderme

Sanal makine harici IP'sinde bağlantı hatası oluşursa sanal makinenin izin verecek şekilde ayarlandığından emin olun hem HTTPS trafiği için de geçerlidir. Bunu doğrulamak için bkz. Temel Apache web sunucusu çalıştırma.

Dönüş sunucusunu ayarlama

Her zaman kendi sıra sunucunuzu kullanabilirsiniz. Aşağıda bir Google Cloud sanal makinesi örneği verilmiştir kullanır.

Not: Sıra sunucusunun bir Google Cloud sanal makine örneğinde çalışması için şunları yaptığınızdan emin olun: 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.

  1. Coturn sunucusunu kurun:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. Aşağıdaki satırları ekleyerek /etc/turnserver.conf dosyasını 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
    
  3. 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
    
  4. Emülatör bölümünde aşağıdaki iki ortam satırını ekleyin:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. AAOS Emülatörü 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 kimlik bilgilerinizle değiştirmeyi unutmayın:
    export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}"
    docker-compose -f js/docker/docker-compose-build.yaml up