בדף הזה נסביר איך להפעיל את AAOS Emulator בתור שירות אינטרנט ולהריץ אותו בדפדפן אינטרנט כדי להפוך אותו לנגיש למשתמשים מרחוק. כך אפשר לקבל מקצה לקצה, הפניה שימושית מינימלית דרך Google Cloud Compute Engine. עם זאת, תוכלו להשתמש בשירות הזה בכל פלטפורמת ענן ציבורית או פרטית לפי בחירתכם.
המטרה
בזכות ההגדרות המרוכזות האלה, אמולטור AAOS יכול להיות נגישה לכל החברה, ספק ומפתחים לעבודה מהבית. כך הניהול והשדרוג יהיו יעילים יותר את אמולטור AAOS לגרסאות חדשות ומבטל את הזמן שנדרש להגדרה ולניהול של מכונות מקומיות למשתמשים בודדים. הפתרון הזה מבצע אופטימיזציה של השימוש במשאבי חומרה ומאפשר סביבת פיתוח של אפליקציות בעלות נמוכה יותר. לדוגמה, למטרות הבאות:
- מחקר על התנהגות המשתמשים, סקירת חוויית המשתמש, תמיכת לקוחות והדרכה.
- הדגמות ללקוחות פוטנציאליים ובערוצי מכירות.
- בדיקה, אימות ואפילו ניפוי באגים של אפליקציות (כולל פיתוח גרסאות build יומיות של OEM (יצרני ציוד מקורי)) בקנה מידה רחב. נקודות שכדאי להעלות את האמולטור שהוא התחליף לספסלי הבדיקה שמשמשים לפיתוח אפליקציות.
- לנציגי מוקד הלקוחות של ה-OEM יש ממשק משתמש אחיד ונוח לגישה אל HU.
יש כמה יתרונות לשימוש באמולטור AAOS:
- אפשר להשתמש בסקריפט הגדרה כדי ליצור אמולטור AAOS מותאם אישית ומבוסס-ענן (אמולטור בענן).
- יצירת קובץ אימג' מותאם אישית של AAOS Cloud Emulator למכונות VM:
- מוכן להגדרה של אמולטור מבוסס-ענן.
- תמונות AAOS AVD ציבוריות שזמינות ליוצר השירות לצורך הפעלת AAOS AVD באמצעות פקודה. לדוגמה, תמונות AVD ציבוריות של ה-OEM (יצרן הציוד המקורי) כדוגמאות שהשותפים יכולים להתאים וליישם.
ארכיטקטורה
הארכיטקטורה של הדוגמה לאמולטור הענן מוצגת בהמשך. הראשון שלך כדי לספק שירות בר-קיימא מינימלי, ניתן להוסיף תמונות AVD של ה-OEM (יצרן הציוד המקורי).
איור 1. ארכיטקטורת Cloud AVD.
אבני הבניין של האמולטור המפתח הן:
כאן.פריט | המטרה |
---|---|
אמולטור Android | מכונת אמולטור מארחת תמונות AVD |
גשר דג זהב-Webrtc | אפליקציית Linux כדי לספק תקשורת בין אפליקציית התגובה לאמולטור AAOS |
android-emulator-webrtc | אפליקציית תגובה להצגת ממשק המשתמש של האמולטור באינטרנט בדפדפן. התגובה גם מתעדת אירועי קלט של משתמשים ושולחת אותם חזרה לשרת. |
סקריפטים של קונטיינרים לאמולטור Android | סקריפטים ב-Python כדי לנהל וליצור תמונות וקונטיינרים של Docker למודולי התוכנה שצוינו למעלה. |
יצירת אסימונים לניהול הרשאות הגישה של האמולטור. | |
הפעלת השרת | יוצרת חיבור ישיר של WebRTC בין הלקוח לשרת. הפעלת השרת נדרש רק כאשר שירות האמולטור פועל מאחורי חומות אש או שרתי proxy. |
Envoy | שירות proxy אל:
|
הגדרת אמולטור ב-VM בענן
כדי ליצור פרויקט ב-GCP:
- נכנסים למסוף Google Cloud Select a Project.
- כדי לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud: הפעלה, השבתה ושינוי של חיוב בפרויקט .
- מפעילים את ה-API.
יצירת מכונה וירטואלית של Linux ב-GCE
1. הפעלת הווירטואליזציה בתוך הארגון
כברירת מחדל, הווירטואליזציה בתוך הארגון מותרת ברמת הפרויקט, התיקייה או הארגון. אלא אם מישהו בארגון שלכם וירטואליזציה מקוננת מושבתת, אין צורך לבצע פעולה כלשהי כדי להפעיל אותו.
- שימוש בכלי שורת הפקודה של gcloud
כדי לוודא שאכן וירטואליזציה בתוך עץ מותרת:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. יצירת דיסק ניתן לאתחול מסוג Ubuntu-1804-lts
- מעבר אל מסוף Cloud.
- בוחרים את פרויקט GCP.
- עוברים לתפריט ניווט ובוחרים באפשרות Compute Engine > דיסקים >
יצירת אחסון.
- נותנים שם לדיסק. לדוגמה:
ubuntu1804lts
- בוחרים אזור ותחום. כדי לתמוך בווירטואליזציה של עץ, יש לוודא שהאזור ו-Zone Select (אזור שבחרת) תומכים במעבדי Haswell (ואילך). מידע נוסף זמין במאמר הבא: Regions and Zones (אזורים ותחומים).
- בחירה של תמונת המקור של
ubuntu-1804-bionic-v20210211
- מגדירים גודל אחסון מתאים (מומלץ להגדיר 100GB או יותר).
- נותנים שם לדיסק. לדוגמה:
איור 2. יוצרים דיסק אתחול של Ubuntu.
3. יצירת תמונה מותאמת אישית עם מפתח רישיון מיוחד כדי להפעיל VMX
- נכנסים אל מסוף Cloud.
- פותחים 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
- מגדירים את 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"
- נותנים שם לתמונה. לדוגמה:
פרטים נוספים זמינים במאמר Nest Virtualization VM Instance.
4. יצירת מכונת VM באמצעות התמונה המותאמת אישית
- נכנסים אל מסוף Cloud.
- בוחרים את פרויקט GCP.
- עבור לתפריט הניווט > Compute Engine > מופע של VM.
איור 3. יצירת מכונת VM.
- מזינים שם למכונה. לדוגמה:
aaosemulator
- בוחרים את משפחת המכונות והסוג הרצוי. ודאו שהמכונה מכילה ארבעה מעבדים vCPU זיכרון בנפח 16GB (או יותר).
- בחירת פלטפורמת CPU תהיה Intel Cascade Lake (ואילך).
- משנים את דיסק האתחול לתמונה שנוצרה בשלב הקודם.
- אפשר להפעיל חומת אש עבור:
- הרשאה לתנועת HTTP
- הרשאה לתנועת HTTPS
5. הגדרת חומת האש לפתיחת יציאה 80 ו-443
- נכנסים אל מסוף Cloud.
- בוחרים את פרויקט GCP.
- עבור לתפריט הניווט > Compute Engine > מכונת VM > מגדירים כלל לחומת אש.
התקנת התוכנה הנדרשת ב-VM
- מתקינים את Python 3 ואת Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- התקנת Android SDK
ו-ADB זמינים בנתיב.
sudo apt install android-sdk
כדי להתקין Docker ו-Docker-Compose, ראו Docker ו- Docker-Compose. צריך לוודא שאפשר להריץ אלה כמשתמש שאינו Root.
- כדי לוודא שהמעבד (CPU) תומך בווירטואליזציה של חומרה (הפקודה אמורה לגרום
מספר שאינו אפס):
egrep -c '(vmx|svm)' /proc/cpuinfo
- מתקינים את המכונה הווירטואלית של הליבה (KVM). כדי להתקין את KVM, מריצים את:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- כדי לוודא שה-KVM פועל:
הפלט אמור להיות:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- כדי להתקין את Node.js ואת Node Packet Manager (NPM):
sudo apt install nodejs npm
הפעלת המאגרים המתארחים
- כדי לאמת את ההתקנה, צריך להריץ את הקונטיינרים המתארחים של 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
פעולה זו מושכת כלפי מטה את המאגר (אם הוא לא זמין באופן מקומי) ומפעילים אותו.
- כשהקונטיינר מופעל, מתחברים למכשיר על ידי הגדרת ADB באותו אופן.
כחיבור AVD במארח מקומי. לדוגמה:
הפלט אמור להיות:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
הגדרת שירות אמולטור AAOS
כדי להגדיר את שירות האמולטור:
- מתקינים את סקריפט הקונטיינר של Docker של Android Emulator:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- הפעולה הזו מפעילה סביבה וירטואלית ויוצרת את קובץ ה-emu-docker של קובץ ההפעלה.
כדי לקבל מידע מפורט על השימוש בו, אפשר להפעיל אותו:
emu-docker -h
- כדי ליצור את הקונטיינרים של Docker, מאשרים את הסכמי הרישיון.
- פיתוח קונטיינר Docker של AAOS Emulator.
- צריך להוריד גרסת build של אמולטור בגרסה מאוחרת יותר מגרסה 7154743. לדוגמה:
sdk-repo-linux-emulator-7154743.zip
- מורידים את תמונת המערכת של האמולטור AAOS. לדוגמה,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- יצירת קונטיינרים באינטרנט והגדרת שם משתמש וסיסמה לגישה מרחוק.
./create_web_container.sh -p user1,passwd1
- מפעילים את שירות האינטרנט של AAOS Emulator:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
הפעלת בהצלחה שירות אינטרנט של אמולטור AAOS! צריך להשתמש בהגדרות הבאות כדי לגשת בדפדפן אינטרנט:
https://<VM_External__IP>
פתרון בעיות
אם מתרחשת שגיאת התחברות לכתובת ה-IP החיצונית של המכונה הווירטואלית, צריך לוודא שה-VM מוגדרת לאפשר גם בתנועת HTTP וגם ב-HTTPS. כדי לאמת זאת, יש לעיין הפעלת שרת אינטרנט בסיסי של Apache.
הגדרת שרת התורן
תמיד אפשר להשתמש בשרת תורות משלך. בהמשך מוצגת דוגמה ל-VM של Google Cloud מכונה.
הערה: כדי ששרת הפנייה יפעל במכונה של Google Cloud VM, חשוב להקפיד להגדיר את כלל חומת האש של המכונה הווירטואלית כדי לאפשר תנועה ביציאות TCP ו-UDP 3478 ו-3479.
- מתקינים את שרת Coturn:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- כדי לשנות את
/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
- משנים את קובץ ה-YAML של Docker לכתיבה כך שיכלול את ההגדרה של TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- בקטע של האמולטור מוסיפים את שתי השורות הבאות בסביבה:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- מפעילים מחדש את שירות האמולטור AAOS עם הגדרת הפנייה.
חשוב להחליף את כתובת ה-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