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

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

मकसद

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

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

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

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

भवन निर्माण

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

पहला डायग्राम. क्लाउड एवीडी आर्किटेक्चर.

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

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

एक प्रॉक्सी सेवा:

  • खुद हस्ताक्षर किए हुए सर्टिफ़िकेट का इस्तेमाल करके एचटीटीपीएस उपलब्ध कराएं.
  • पोर्ट 80 (http) से आने वाले ट्रैफ़िक को पोर्ट 443 (https) पर रीडायरेक्ट करें.
  • एम्युलेटर के लिए, 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. कोई इलाका और ज़ोन चुनें. नेस्ट किए गए वर्चुअलाइज़ेशन की सुविधा के लिए, पक्का करें कि क्षेत्र के लिए आपके पास एक और ज़ोन है. इस बारे में ज़्यादा जानने के लिए, यह देखें इलाके और ज़ोन.
    3. ubuntu-1804-bionic-v20210211 की सोर्स इमेज चुनें
    4. डिस्क का सही साइज़ सेट करें. हमारा सुझाव है कि Drive का साइज़ 100 जीबी या इससे ज़्यादा पर सेट करें.

दूसरा डायग्राम. Ubuntu बूट करने लायक डिस्क बनाएं.

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

  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"
    

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

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

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

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

  4. इंस्टेंस का नाम डालें. उदाहरण के लिए, aaosemulator
  5. अपनी ज़रूरत के हिसाब से मशीन की फ़ैमिली और टाइप चुनें. पक्का करें कि मशीन में चार vCPU हों और 16 जीबी या इससे ज़्यादा की मेमोरी.
  6. Intel Cascade Lake (या बाद का) होने के लिए CPU प्लैटफ़ॉर्म चुनें.
  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-कंपोज़ इंस्टॉल करने के लिए, देखें Docker और डॉकर-कंपोज़. पक्का करें कि आप दौड़ सकते हैं इन्हें गैर-रूट उपयोगकर्ता के तौर पर शामिल करते हैं.

  3. यह पुष्टि करने के लिए कि सीपीयू, हार्डवेयर वर्चुअलाइज़ेशन की सुविधा देता है या नहीं (कमांड का नतीजा गैर-शून्य संख्या):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  4. Kernel वर्चुअल मशीन (KVM) इंस्टॉल करें. KVM इंस्टॉल करने के लिए, इसे चलाएं:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  5. यह पुष्टि करने के लिए कि केवीएम काम कर रहा है:
    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 Emulator कंटेनर को सार्वजनिक तौर पर चलाएं डेटा स्टोर करने की जगह. कंटेनर के बारे में जानकारी देखी जा सकती है यहां पढ़ें. अब इन कंटेनर को बनाए बिना चलाया जा सकता है. जैसे:
    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 को उसी तरह कॉन्फ़िगर करके डिवाइस से कनेक्ट करें का इस्तेमाल, लोकल होस्ट पर एवीडी से कनेक्ट करने के लिए किया जा सकता है. जैसे:
    adb connect localhost:5555
    adb devices
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है आउटपुट यह होना चाहिए:
    List of devices attached
    localhost:5555 device
    

AAOS एम्युलेटर सेवा को सेट अप करें

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

  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 एम्युलेटर वेब सेवा शुरू करें:
    docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

https://<VM_External__IP>

समस्या का हल

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

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

अपने टर्न सर्वर का इस्तेमाल किया जा सकता है. यहां Google Cloud वर्चुअल मशीन (वीएम) का एक सैंपल दिया गया है इंस्टेंस.

ध्यान दें: Google Cloud VM इंस्टेंस पर टर्न सर्वर काम करे, इसके लिए पक्का करें कि टीसीपी और यूडीपी पोर्ट 3478 और 3479 पर ट्रैफ़िक की अनुमति देने के लिए, वीएम फ़ायरवॉल के नियम को कॉन्फ़िगर करें.

  1. कोटर्न सर्वर इंस्टॉल करें:
    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. टर्न कॉन्फ़िगरेशन को शामिल करने के लिए 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
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है