अपना क्लाउड एम्युलेटर बनाएं

इस पेज पर, AAOS एमुलेटर को वेब सेवा के तौर पर चलाने और उसे वेब ब्राउज़र में चलाने का तरीका बताया गया है, ताकि उपयोगकर्ता उसे किसी भी जगह से ऐक्सेस कर सकें. ऐसा करने पर, Google Cloud के Compute Engine की मदद से, एंड-टू-एंड और कम से कम काम का रेफ़रंस मिलता है. हालांकि, इस सेवा का इस्तेमाल अपनी पसंद के किसी भी सार्वजनिक या निजी क्लाउड प्लैटफ़ॉर्म पर किया जा सकता है.

मकसद

एक ही जगह से कॉन्फ़िगरेशन और सेटअप करने की सुविधा की मदद से, AAOS एमुलेटर को पूरी कंपनी, सप्लायर, और घर से काम करने वाले डेवलपर ऐक्सेस कर सकते हैं. ऐसा करने से, AAOS एमुलेटर को नए वर्शन में मैनेज और अपग्रेड करना ज़्यादा आसान हो जाता है. साथ ही, अलग-अलग उपयोगकर्ताओं के लिए लोकल मशीनों को सेट अप और मैनेज करने में लगने वाला समय भी बच जाता है. यह सलूशन, हार्डवेयर संसाधनों के इस्तेमाल को ऑप्टिमाइज़ करता है. साथ ही, कम लागत में ऐप्लिकेशन डेवलपमेंट एनवायरमेंट उपलब्ध कराता है. उदाहरण के लिए, इन कामों के लिए:

  • उपयोगकर्ता से जुड़ी रिसर्च, उपयोगकर्ता अनुभव की समीक्षा, ग्राहक सहायता, और ट्रेनिंग.
  • संभावित ग्राहकों और बिक्री चैनलों को डेमो दिखाना.
  • बड़े पैमाने पर ऐप्लिकेशन की जांच करें, उनकी पुष्टि करें, और उन्हें डीबग करें. इसमें हर दिन OEM HMI के बनाए गए बिल्ड भी शामिल हैं. ऐप्लिकेशन डेवलप करने के लिए, ऐप्लिकेशन को टेस्ट करने के लिए इस्तेमाल किए जाने वाले टेस्ट बेंच की जगह, एमुलेटर का इस्तेमाल करें.
  • OEM के ग्राहक कॉल सेंटर एजेंट के पास, एक जैसा और आसानी से ऐक्सेस किया जा सकने वाला HU यूज़र इंटरफ़ेस (यूआई) होता है.

AAOS Emulator का इस्तेमाल करने के कई फ़ायदे हैं:

  • पसंद के मुताबिक और क्लाउड पर काम करने वाला AAOS एमुलेटर (क्लाउड एमुलेटर) बनाने के लिए, सेटअप स्क्रिप्ट का इस्तेमाल करें.
  • VM इंस्टेंस के लिए, पसंद के मुताबिक AAOS Cloud Emulator इमेज बनाएं:
    • क्लाउड-आधारित एमुलेटर का सेट-अप तैयार है.
    • सेवा बनाने वाले के लिए उपलब्ध सार्वजनिक AAOS AVD इमेज, ताकि वह किसी निर्देश की मदद से AAOS AVD को शुरू कर सके. उदाहरण के लिए, पार्टनर के लिए सैंपल के तौर पर सार्वजनिक OEM AVD इमेज, ताकि वे उन्हें अपना सकें और लागू कर सकें.

भवन निर्माण

क्लाउड एमुलेटर के उदाहरण का आर्किटेक्चर नीचे दिखाया गया है. आपकी पहली कम से कम काम की सेवा, आपकी OEM AVD इमेज जोड़ने पर काम करेगी.

पहली इमेज. Cloud AVD का आर्किटेक्चर.

इम्यूलेटर के मुख्य बिल्डिंग ब्लॉक ये हैं:

यहां क्लिक करें.
आइटम मकसद
Android Emulator एम्युलेटर इंस्टेंस में AVD इमेज होस्ट की जाती हैं
Goldfish-webrtc ब्रिज React ऐप्लिकेशन और AAOS एमुलेटर के बीच कम्यूनिकेशन की सुविधा देने वाला Linux ऐप्लिकेशन
android-emulator-webrtc वेब ब्राउज़र में इम्युलेटर का यूज़र इंटरफ़ेस (यूआई) दिखाने के लिए, React ऐप्लिकेशन. React, उपयोगकर्ता के इनपुट इवेंट भी कैप्चर करता है और उन्हें सर्वर पर वापस भेजता है.
Android एमुलेटर कंटेनर स्क्रिप्ट ऊपर दिए गए सॉफ़्टवेयर मॉड्यूल के लिए, Docker इमेज और कंटेनर बनाने और उन्हें मैनेज करने के लिए Python स्क्रिप्ट.
यह एमुलेटर के ऐक्सेस की अनुमतियों को मैनेज करने के लिए टोकन जनरेट करता है.
सर्वर चालू करना क्लाइंट और सर्वर के बीच WebRTC का सीधा कनेक्शन बनाता है. Turn server को सिर्फ़ तब चालू करना ज़रूरी है, जब एमुलेटर सेवा फ़ायरवॉल या प्रॉक्सी के पीछे चल रही हो.
Envoy

प्रॉक्सी सेवा, ताकि:

  • खुद हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करके, एचटीटीपीएस उपलब्ध कराएं.
  • पोर्ट 80 (एचटीटीपी) पर आने वाले ट्रैफ़िक को पोर्ट 443 (एचटीटीपीएस) पर रीडायरेक्ट करें.
  • एम्युलेटर के लिए gRPC प्रॉक्सी के तौर पर काम करता है.
  • एमुलेटर के gRPC एंडपॉइंट को ऐक्सेस करने की अनुमति देने के लिए, टोकन की पुष्टि करें.
  • अन्य अनुरोधों को Nginx कॉम्पोनेंट पर रीडायरेक्ट करें, जो React ऐप्लिकेशन को होस्ट करता है.

क्लाउड वर्चुअल मशीन (वीएम) पर एम्युलेटर सेट अप करना

GCP प्रोजेक्ट बनाने के लिए:

  1. Google Cloud Console पर जाएं और कोई प्रोजेक्ट चुनें.
  2. यह पुष्टि करने के लिए कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है, किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू करना, बंद करना या बदलना लेख पढ़ें.
  3. एपीआई को चालू करें.

GCE में Linux वीएम बनाना

1. नेस्ट किए गए वर्चुअलाइज़ेशन की सुविधा चालू करना

डिफ़ॉल्ट रूप से, नेस्ट किए गए वर्चुअलाइज़ेशन की अनुमति प्रोजेक्ट, फ़ोल्डर या संगठन के लेवल पर होती है. अगर आपके संगठन के किसी व्यक्ति ने नेस्ट किए गए वर्चुअलाइज़ेशन की सुविधा बंद नहीं की है, तो आपको इसे चालू करने के लिए कुछ भी करने की ज़रूरत नहीं है.

  1. नेस्ट किए गए वर्चुअलाइज़ेशन की अनुमति है या नहीं, इसकी पुष्टि करने के लिए gcloud कमांड-लाइन टूल का इस्तेमाल करें:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Ubuntu-1804-lts की बूट की जा सकने वाली डिस्क बनाना

  1. Cloud Console पर जाएं.
  2. GCP प्रोजेक्ट चुनें.
  3. नेविगेशन मेन्यू पर जाएं और Compute Engine > डिस्क > डिस्क बनाएं चुनें.
    1. डिस्क का नाम दें. उदाहरण के लिए, ubuntu1804lts
    2. कोई देश/इलाका और ज़ोन चुनें. नेस्ट किए गए वर्चुअलाइज़ेशन की सुविधा इस्तेमाल करने के लिए, पक्का करें कि आपने जो क्षेत्र और ज़ोन चुना है वह Haswell (या उसके बाद के वर्शन) प्रोसेसर के साथ काम करता हो. ज़्यादा जानने के लिए, क्षेत्र और ज़ोन देखें.
    3. ubuntu-1804-bionic-v20210211 की सोर्स इमेज चुनें
    4. डिस्क का सही साइज़ सेट करें. हमारा सुझाव है कि आप 100 जीबी या उससे ज़्यादा का साइज़ सेट करें.

दूसरी इमेज. Ubuntu की बूट की जा सकने वाली डिस्क बनाएं.

3. VMX को चालू करने के लिए, खास लाइसेंस कुंजी वाली कस्टम इमेज बनाना

  1. Cloud Console पर जाएं.
  2. Cloud Shell खोलें और नीचे दिए गए निर्देश का पालन करें:
    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"
    
    • इमेज का नाम डालें. उदाहरण के लिए, aaos-emulator-image
    • डिस्क ज़ोन को उस ज़ोन पर सेट करें जिसमें आपने डिस्क बनाई है.
    • डिस्क का नाम उसी नाम पर सेट करें जिसका इस्तेमाल डिस्क बनाने के लिए किया गया था.

    उदाहरण के लिए:

    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"
    

ज़्यादा जानकारी के लिए, नेस्ट किए गए वर्चुअलाइज़ेशन VM इंस्टेंस देखें.

4. पसंद के मुताबिक बनाई गई इमेज का इस्तेमाल करके, VM इंस्टेंस बनाना

  1. Cloud Console पर जाएं.
  2. GCP प्रोजेक्ट चुनें.
  3. नेविगेशन मेन्यू > Compute Engine > VM इंस्टेंस पर जाएं.

    तीसरी इमेज. VM इंस्टेंस बनाएं.

  4. इंस्टेंस का नाम डालें. उदाहरण के लिए, aaosemulator
  5. अपनी पसंद की मशीन फ़ैमिली और टाइप चुनें. पक्का करें कि मशीन में चार वर्चुअल सीपीयू और 16 जीबी या इससे ज़्यादा मेमोरी हो.
  6. सीपीयू प्लैटफ़ॉर्म के तौर पर Intel Cascade Lake (या इसके बाद का वर्शन) चुनें.
  7. बूट डिस्क को पिछले चरण में बनाई गई इमेज में बदलें.
  8. इनके लिए फ़ायरवॉल चालू करें:
    • एचटीटीपी ट्रैफ़िक की अनुमति देना
    • एचटीटीपीएस ट्रैफ़िक की अनुमति देना

5. पोर्ट 80 और 443 को खोलने के लिए फ़ायरवॉल को कॉन्फ़िगर करना

  1. Cloud Console पर जाएं.
  2. GCP प्रोजेक्ट चुनें.
  3. नेविगेशन मेन्यू > Compute Engine > VM इंस्टेंस > फ़ायरवॉल नियम सेट अप करें पर जाएं.

वीएम पर ज़रूरी सॉफ़्टवेयर इंस्टॉल करना

  1. Python 3 और Python3-env इंस्टॉल करें:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. पाथ में मौजूद Android SDK और ADB इंस्टॉल करें.
    sudo apt install android-sdk
    

    Docker और Docker-compose इंस्टॉल करने के लिए, Docker और Docker-compose लेख पढ़ें. पक्का करें कि आपके पास नॉन-रूट उपयोगकर्ता के तौर पर, इन्हें चलाने का ऐक्सेस हो.

  3. यह पुष्टि करने के लिए कि सीपीयू में हार्डवेयर वर्चुअलाइज़ेशन की सुविधा काम करती है या नहीं (कमांड के नतीजे में शून्य के अलावा कोई संख्या दिखनी चाहिए):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Kernel Virtual Machine (KVM) इंस्टॉल करें. KVM इंस्टॉल करने के लिए, यह चलाएं:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. KVM के काम करने की पुष्टि करने के लिए:
    sudo apt install cpu-checker
    kvm-ok
    
    आउटपुट इस तरह का होना चाहिए:
    INFO: /dev/kvm exists
    KVM acceleration can be used
  6. Node.js और Node Packet Manager (NPM) इंस्टॉल करने के लिए:
    sudo apt install nodejs npm
    

होस्ट किए गए कंटेनर शुरू करना

  1. इंस्टॉलेशन की पुष्टि करने के लिए, सार्वजनिक रिपॉज़िटरी से होस्ट किए गए Android एमुलेटर कंटेनर चलाएं. कंटेनर के बारे में जानकारी यहां देखी जा सकती है. अब इन कंटेनर को बनाए बिना भी चलाया जा सकता है. उदाहरण के लिए:
    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
    

    अगर कंटेनर स्थानीय तौर पर उपलब्ध नहीं है, तो यह उसे डाउनलोड करता है और लॉन्च करता है.

  2. कंटेनर लॉन्च होने के बाद, डिवाइस से कनेक्ट करने के लिए, एडीबी को उसी तरह कॉन्फ़िगर करें जिस तरह किसी लोकल होस्ट पर एवीडी को कनेक्ट किया जाता है. उदाहरण के लिए:
    adb connect localhost:5555
    adb devices
    
    आउटपुट इस तरह का होना चाहिए:
    List of devices attached
    localhost:5555 device

AAOS Emulator सेवा सेट अप करना

एमुलेटर सेवा सेट अप करने के लिए:

  1. Android Emulator की Docker कंटेनर स्क्रिप्ट इंस्टॉल करें:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. इससे वर्चुअल एनवायरमेंट चालू होता है और emu-docker को चलाया जा सकता है. इसके इस्तेमाल के बारे में ज़्यादा जानकारी पाने के लिए, इसे लॉन्च करें:
    emu-docker -h
    
  3. Docker कंटेनर बनाने के लिए, लाइसेंस के लिए किए गए कानूनी समझौते स्वीकार करें.
  4. AAOS एमुलेटर का Docker कंटेनर बनाएं.
  5. 7154743 के बाद का एम्युलेटर बिल्ड डाउनलोड करें. उदाहरण के लिए:
    sdk-repo-linux-emulator-7154743.zip
    
  6. AAOS एम्युलेटर की सिस्टम इमेज डाउनलोड करें. उदाहरण के लिए, sdk-repo-linux-system-images-7115454.zip:
    emu-docker create <emulator-zip> <system-image-zip>
    
  7. वेब कंटेनर बनाएं और रिमोट ऐक्सेस के लिए उपयोगकर्ता नाम और पासवर्ड सेट करें.
    ./create_web_container.sh -p user1,passwd1
    
  8. AAOS Emulator वेब सेवा शुरू करना:
    docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
    

आपने AAOS एमुलेटर वेब सेवा शुरू कर दी है! इसे वेब ब्राउज़र पर ऐक्सेस करने के लिए, इनका इस्तेमाल करें:

https://<VM_External__IP>

समस्या का हल

अगर VM के बाहरी आईपी से कनेक्शन से जुड़ी कोई गड़बड़ी होती है, तो पक्का करें कि VM को एचटीटीपी और एचटीटीपीएस, दोनों तरह के ट्रैफ़िक की अनुमति देने के लिए सेट अप किया गया हो. इसकी पुष्टि करने के लिए, सामान्य Apache वेब सर्वर चलाना लेख पढ़ें.

टर्न सर्वर सेट अप करना

आपके पास अपने टर्न सर्वर का इस्तेमाल करने का विकल्प हमेशा होता है. यहां Google Cloud VM इंस्टेंस का एक सैंपल दिया गया है.

ध्यान दें: Google Cloud के वर्चुअल मशीन (वीएम) इंस्टेंस पर टर्न सर्वर को काम करने के लिए, ��

  1. coturn सर्वर इंस्टॉल करें:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. /etc/turnserver.conf में बदलाव करने के लिए, ये लाइनें जोड़ें:
    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. TURN कॉन्फ़िगरेशन को शामिल करने के लिए, Docker Compose YAML फ़ाइल में बदलाव करें:
    cd android-emulator-container-script
    nano  js/docker/docker-compose-build.yaml
    
  4. एमुलेटर सेक्शन में, इन दो एनवायरमेंट लाइन को जोड़ें:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
  5. टर्न कॉन्फ़िगरेशन की मदद से, AAOS एमुलेटर सेवा को रीस्टार्ट करें. टर्न सर्वर आईपी, उपयोगकर्ता नाम, और क्रेडेंशियल को यहां दिए गए अपने आईपी, उपयोगकर्ता नाम, और क्रेडेंशियल से बदलना न भूलें:
    export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}"
    docker-compose -f js/docker/docker-compose-build.yaml up