Kendi Bulut Emülatörünüzü Oluşturun

Bu makalede, bir Web hizmeti olarak AAOS Emulator çalıştırmak ve kullanıcılara uzaktan erişilebilir hale getirmek için bir web tarayıcısında çalıştırmak açıklamaktadır. Bunu yapmak, Google Bulut üzerinden uçtan uca, minimal yaşayabilir referans sağlar Compute Engine . 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:

Kalem 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 Tepki web tarayıcısında Emülatörü UI gösterilecek uygulamayı. 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:

  • Kendinden imzalı bir sertifika kullanarak HTTPS sağlayın.
  • 80 (http) bağlantı noktasındaki trafiği 443 (https) bağlantı noktasına yönlendirin.
  • Öykünücü için bir gRPC proxy'si olarak hareket edin.
  • Öykünücü gRPC uç noktasına erişime izin vermek için belirteçleri doğrulayın.
  • Diğer istekleri, bir React uygulamasını barındıran Nginx bileşenine yönlendirin.

Bir bulut sanal makinesinde öykünücü kurma

Bir GCP projesi oluşturmak için:

  1. Google Bulut Konsolu'na gidin ve bir Proje'yi seçin .
  2. O faturalandırma Google Bulut projesi için etkindir onaylamak için bkz , bir proje için devre dışı veya değişim Ödeme kullan .
  3. API etkinleştirme .

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şunuzdaki bir kişi olmadıkça engelli iç içe sanallaştırma , bunu sağlamak için hiçbir şey gerekmez.

  1. Kullanım gcloud komut satırı aracı : İç içe Sanallaştırma izin verildiğini onaylayın
    gcloud beta resource-manager org-policies describe     constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Bir Ubuntu-1804-lts önyüklenebilir diski oluşturun

  1. Git Bulut Konsolu .
  2. GCP projesini seçin.
  3. Gezinme menüsü > Compute Engine > Diskler > Disk Oluştur'a gidin.
    1. Bir disk adı sağlayın. Örneğin, ubuntu1804lts
    2. 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 için bkz Bölgeler ve Bölgeleri .
    3. Kaynak görüntüyü seçin ubuntu-1804-bionic-v20210211
    4. Uygun bir disk boyutu ayarlayın (100 GB veya daha büyük önerilir).

Şekil Ubuntu açılış disketi oluşturun 1.

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

  1. Git Bulut Konsolu .
  2. Aşağıdaki komutu Bulut Shell açın ve 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"
    

Ayrıntılar için bkz İçiçe Sanallaştırma VM Örneği .

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

  1. Git Bulut Konsolu .
  2. GCP projesini seçin.
  3. Gezinme Menüsü > Compute Engine > Sanal Makine örneği'ne gidin.

    Şekil Bir VM örneği oluşturma 1.

  4. Bir örnek adı girin. Örneğin, aaosemulator
  5. İstediğiniz makine ailesini ve tipini seçin. Makinenin dört vCPU ve 16 GB bellek (veya daha fazla) içerdiğinden emin olun.
  6. Intel Cascade Lake (veya üstü) olacak CPU platformunu 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ş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

  1. Git Bulut Konsolu .
  2. GCP projesini seçin.
  3. Gezinme Menüsü > Compute Engine > VM örneği > Güvenlik duvarı kuralı ayarla'ya gidin.

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

  1. Python 3 ve Python3-env yükleyin:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. Yükleme Android SDK yolda ve ADB kullanılabilir.
    sudo apt install android-sdk
    

    Docker ve Docker-oluşturma deneyimini yüklemek için, bkz Docker ve Docker-oluşturma deneyimini . Yap emin olarak bu çalıştırabilirsiniz kök olmayan bir kullanıcı .

  3. İşlemci destekler donanım sanallaştırma (komut sıfırdan farklı sayıda neden olmalı) onaylamak için:
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Çekirdek Sanal Makinesini (KVM) kurun. KVM yüklemek için:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. KVM doğrulamak için çalışıyor:
    sudo apt install cpu-checker
    kvm-ok
    
    çıktı olmalıdır:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. : Node.js ve Düğüm Paket Yöneticisi (YKY) takmak için
    sudo apt install nodejs
    sudo apt install npm
    

Barındırılan kapsayıcıları başlatın

  1. Yüklemeyi doğrulamak için, genel depodan barındırılan Android Emulator kapsayıcılarını çalıştırın. Sen kapları ile ilgili ayrıntıları bulabilirsiniz burada . 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.

  2. 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
    
    çıkış olmalıdır:
    List of devices attached
    localhost:5555 device
    

AAOS Öykünücü hizmetini ayarlayın

Emülatör hizmetini kurmak için:

  1. Android Emülatörü Docker konteyner komut yükleyin:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. Bu, sanal bir ortamı etkinleştirir ve yürütülebilir emu-docker'ı kullanılabilir hale getirir. Kullanımı ile ilgili ayrıntılı bilgi almak için, başlatmak:
    emu-docker -h
    
  3. Docker kapsayıcılarını oluşturmak için lisans sözleşmelerini kabul edin.
  4. AAOS Emulator Docker kapsayıcısını oluşturun.
  5. Örneğin sürümü 7154743. daha geç bir emülatör yapı indirin:
    sdk-repo-linux-emulator-7154743.zip
    
  6. 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>
    
  7. 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
    
  8. AAOS Emulator Web Service 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 bağlantı hatası oluşursa, makyaj emin VM hem HTTP ve HTTPS trafiğine izin verecek şekilde ayarlanmıştır. Bu doğrulamak için, bkz temel Apache web sunucusu Running .

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: Bir Google Cloud VM örneğinde dönüş sunucu çalışması için TCP ve UDP bağlantı noktaları 3478 ve 3479 tarihinde trafiğe izin verecek şekilde kural firewall VM yapılandırmak emin olun.

  1. Coturn sunucusu yükleyin:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. Değiştir /etc/turnserver.conf şu satırları ekleyerek:
    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. DÖNÜŞ yapılandırmasını dahil etmek Docker Oluştur YAML dosyasını 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ırları ekleyin:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. AAOS Emulator hizmetini dönüş yapılandırmasıyla yeniden başlatın. : Dönüş sunucusu IP, kullanıcı adı değiştirmeyi unutmayın ve kendi aşağıda kimlik 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