בנה אמולטור ענן משלך

מאמר זה מתאר כיצד להפעיל את AAOS Emulator כשירות אינטרנט ולהפעיל אותו בדפדפן אינטרנט כדי להפוך אותו לנגיש מרחוק למשתמשים. פעולה זו מספקת התייחסות מקצה לקצה, בעלת קיימא מינימלית, דרך Google Cloud Compute Engine . עם זאת, אתה יכול להשתמש בשירות זה בכל פלטפורמת ענן ציבורית או פרטית לבחירתך.

מַטָרָה

תצורה והגדרה מרכזיים אלה הופכים את AAOS Emulator לנגיש לחברה שלמה, לספק ולמפתחים לעבודה מהבית. פעולה זו מייעלת את הניהול והשדרוג של אמולטור AAOS לגרסאות חדשות ומבטלת את הזמן הדרוש להגדרה וניהול של מחשבים מקומיים עבור משתמשים בודדים. פתרון זה מייעל את השימוש במשאבי החומרה ומאפשר סביבת פיתוח אפליקציות בעלות נמוכה יותר. לדוגמה, למטרות של:

  • מחקר משתמשים, סקירת חווית משתמש, תמיכת לקוחות והדרכה.
  • הדגמות ללקוחות פוטנציאליים ובערוצי מכירה.
  • בדוק, תקף ואפילו ניפוי באגים (כולל יישומים יומיומיים של OEM HMI) בקנה מידה. ראה באמולטור תחליף לספסלי הבדיקה בהם משתמשים לפיתוח אפליקציות.
  • לסוכני מוקד לקוחות OEM יש UI אחיד וקל לגישה.

היתרונות של השימוש באמולטור AAOS הם רבים:

  • השתמש בסקריפט התקנה כדי ליצור אמולטור AAOS מותאם אישית ומבוסס ענן (אמולטור ענן).
  • בנו תמונת AAOS Cloud Emulator מותאמת אישית עבור מופעי VM:
    • הגדרה מוכנה של אמולטור מבוסס ענן.
    • תמונות AAOS AVD ציבוריות זמינות ליוצר השירות כדי להפעיל AAOS AVD עם פקודה. לדוגמה, תמונות OEM AVD ציבוריות כדוגמאות להתאמה ויישום של שותפים.

ארכיטקטורה

הארכיטקטורה של דוגמה לאמולטור הענן מומחשת להלן. השירות הראשון שלך בעל ערך מינימלי יעבוד על ידי הוספת תמונות OEM AVD משלך.

איור 1. ארכיטקטורת Cloud AVD

אבני הבניין העיקריות של האמולטור הן:

פריט מַטָרָה
אמולטור אנדרואיד מופע האמולטור מארח תמונות AVD
גשר זהב-webrtc אפליקציית לינוקס לספק תקשורת בין אפליקציית react לאמולטור AAOS
android-emulator-webrtc אפליקציית תגובה להצגת ממשק המשתמש של האמולטור בדפדפן אינטרנט. React גם לוכדת אירועי קלט של משתמשים ושולחת אותם בחזרה לשרת.
אנדרואיד אמולטור מיכל סקריפטים סקריפטים של Python לניהול ויצירת תמונות ומיכלים של Docker עבור מודולי התוכנה שלעיל.
JWT Service (שירות JSON Web Token) יוצר אסימונים לניהול הרשאות הגישה של האמולטור.
הפוך שרת יוצר חיבור ישיר של WebRTC בין הלקוח לשרת. שרת Turn נדרש רק כאשר שירות האמולטור פועל מאחורי חומות אש או פרוקסי.
שַׁגְרִיר

שירות פרוקסי ל:

  • ספק HTTPS באמצעות אישור בחתימה עצמית.
  • הפנה תעבורה ביציאה 80 (http) ליציאה 443 (https).
  • פעל כפרוקסי gRPC עבור האמולטור.
  • אמת אסימונים כדי לאפשר גישה לנקודת הקצה gRPC של האמולטור.
  • הפנה בקשות אחרות לרכיב Nginx, המארח יישום React.

הגדר אמולטור ב-VM בענן

כדי ליצור פרויקט GCP:

  1. עבור אל Google Cloud Console ובחר פרויקט .
  2. כדי לאשר שהחיוב מופעל עבור פרויקט Google Cloud שלך, ראה הפעלה, השבתה או שינוי חיוב עבור פרויקט .
  3. הפעל את ה-API .

צור Linux VM ב-GCE

1. אפשר וירטואליזציה מקוננת

כברירת מחדל, וירטואליזציה מקוננת מותרת ברמת הפרויקט, התיקיה או הארגון. אלא אם כן מישהו בארגון שלך השבית וירטואליזציה מקוננת , אינך צריך לעשות דבר כדי להפעיל אותה.

  1. השתמש בכלי שורת הפקודה gcloud כדי לאשר ש- Nested Virtualization מותר:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. צור דיסק אתחול של Ubuntu-1804-lts

  1. עבור אל Cloud Console .
  2. בחר בפרויקט GCP.
  3. עבור אל תפריט הניווט > מנוע מחשב > דיסקים > צור דיסק.
    1. ספק שם דיסק. לדוגמה, ubuntu1804lts
    2. בחר אזור ואזור. כדי לתמוך בווירטואליזציה מקוננת, ודא שהאזור והאזור שבחרת תומכים במעבדי Haswell (או מאוחר יותר). למידע נוסף, ראה אזורים ואזורים .
    3. בחר את תמונת המקור של ubuntu-1804-bionic-v20210211
    4. הגדר גודל דיסק מתאים (מומלץ 100GB או יותר).

איור 1. צור דיסק אתחול של אובונטו

3. צור תמונה מותאמת אישית עם מפתח רישיון מיוחד כדי לאפשר VMX

  1. עבור אל Cloud Console .
  2. פתחו מעטפת ענן והשתמשו בפקודה הבאה:
    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
    • הגדר את Disk Zone לאזור שבו יצרת את הדיסק.
    • הגדר את שם הדיסק לשם שבו השתמשת ליצירת הדיסק.

    לדוגמה:

    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 Nested Virtualization .

4. צור מופע VM באמצעות התמונה המותאמת אישית

  1. עבור אל Cloud Console .
  2. בחר בפרויקט GCP.
  3. עבור אל תפריט הניווט > Compute Engine > מופע VM.

    איור 1. צור מופע VM

  4. הזן שם מופע. לדוגמה, aaosemulator
  5. בחר את משפחת המכונות והסוג הרצויים. ודא שהמכשיר מכיל ארבעה מעבדי vCPU וזיכרון של 16 GB (או יותר).
  6. בחר בפלטפורמת ה-CPU להיות Intel Cascade Lake (או מאוחר יותר).
  7. שנה את דיסק האתחול לתמונה שנוצרה בשלב הקודם.
  8. אפשר חומת אש עבור:
    • אפשר תעבורת HTTP
    • אפשר תעבורת HTTPS

5. הגדר את חומת האש לפתיחת יציאות 80 ו-443

  1. עבור אל Cloud Console .
  2. בחר בפרויקט GCP.
  3. עבור אל תפריט ניווט > Compute Engine > מופע VM > הגדר כלל חומת אש.

התקן את התוכנה הנדרשת ב-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. כדי לוודא שה-CPU תומך בווירטואליזציה של החומרה (הפקודה אמורה להביא למספר שאינו אפס):
    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. כדי לאמת את ההתקנה, הפעל את מיכלי אמולטור אנדרואיד המתארחים מהמאגר הציבורי. פרטים על המכולות תוכלו למצוא כאן . כעת אתה יכול להפעיל את הקונטיינרים האלה מבלי לבנות אותם. לדוגמה:
    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 באותו אופן כמו חיבור AVD במארח מקומי. לדוגמה:
    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 Emulator 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 Emulator! השתמש בדברים הבאים כדי לגשת אליו בדפדפן אינטרנט:

https://<VM_External__IP>

פתרון תקלות

אם מתרחשת שגיאת חיבור ל-IP החיצוני של ה-VM, ודא שה-VM מוגדר לאפשר תעבורת HTTP ו- HTTPS. כדי לאמת זאת, ראה הפעלת שרת אינטרנט בסיסי של Apache .

הגדר את שרת התור

אתה תמיד יכול להשתמש בשרת תור משלך. להלן דוגמה למופע של Google Cloud VM.

הערה: כדי לגרום לשרת התור לעבוד על מופע של Google Cloud VM, הקפד להגדיר את כלל חומת האש של VM כדי לאפשר תעבורה ביציאות TCP ו-UDP 3478 ו-3479.

  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. שנה את הקובץ Docker Compose YAML כך שיכלול את תצורת TURN:
    cd android-emulator-container-script
    nano  js/docker/docker-compose-build.yaml
    
  4. הוסף את שתי שורות הסביבה הבאות בקטע האמולטור:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. הפעל מחדש את שירות AAOS Emulator עם תצורת התור. הקפד להחליף את ה-IP, שם המשתמש והאישור של שרת התור שלהלן בכתובת שלך:
    export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}"
    docker-compose -f js/docker/docker-compose-build.yaml up