הגדרה של רשת אמולטור Android

האמולטור מספק יכולות מגוונות לרשתות שניתן להשתמש בהן להגדיר סביבות בדיקה ומודלים מורכבים לאפליקציה. הדף הזה מציג את הארכיטקטורה והיכולות של רשת האמולטור.

מרחב הכתובות של הרשת

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

הנתב הווירטואלי של כל מכונה מנהל את כתובת הרשת 10.0.2/24 המרחב המשותף. כל הכתובות שמנוהלות על ידי הנתב הן בפורמט 10.0.2.xx, כאשר xx הוא מספר. הכתובות במרחב הזה הן הוקצה מראש על ידי האמולטור או הנתב, באופן הבא:

כתובת רשת תיאור
10.0.2.1 כתובת הנתב או השער
10.0.2.2 כינוי מיוחד לממשק הלולאה החוזרת של המארח (127.0.0.1 מכונת פיתוח)
10.0.2.3 שרת ה-DNS הראשון
10.0.2.4 / 10.0.2.5 / 10.0.2.6 שרתי DNS שני, שלישי ורביעי (אופציונלי)
15.0.2.10 רשת האמולציה של המכשיר בזמן החיבור באמצעות אתרנט
16.0.2.10 האמולציה של רשת המכשיר בזמן החיבור באמצעות Wi-Fi
127.0.0.1 ממשק הלולאה החוזרת (loopback) של המכשיר

כל האמולטורים משתמשים באותן הקצאות כתובות במקרים שונים. כלומר, אם יש לכם שני מופעים שפועלים בו-זמנית בכל מחשב, לכל אחד יהיה נתב משלו, ומאחורי כל אחד יהיה כתובת ה-IP 10.0.2.15. המכונות מבודדות על ידי נתב ולא יכולות מאתרים אחד את השני באותה רשת. לקבלת מידע על כדי לאפשר למכונות של אמולטור לתקשר באמצעות TCP/UDP, אפשר לעיין בקטע בנושא חיבור בין מכונות אמולטור.

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

הכתובות שמוקצות מראש של מכשיר אמולציה הן ספציפיים לאמולטור Android וסביר להניח שהם יהיו שונים מאוד (שסביר להניח שהם גם מתורגמים לכתובת רשת, ספציפית מאחורי נתב או חומת אש).

מגבלות על רשתות מקומיות

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

  • יכול להיות שחומת אש חוסמת את התקשורת עם המכשיר האמולציה שפועלת במחשב שלך.
  • יכול להיות שהתקשורת עם המכשיר האמולציה תיחסם על ידי אדם אחר חומת אש או נתב (פיזי) שאליהן המחשב שלכם מחובר.

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

בהתאם לסביבה, ייתכן שהאמולטור לא יוכל לתמוך בתכונות אחרות ופרוטוקולים (כמו ICMP, המשמש ל-'ping'). נכון לעכשיו, האמולטור לא תומך ב-IGMP או בריבוי שידורים.

שימוש בהפניה לרשת אחרת

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

כדי להגדיר את הפניית הרשת מחדש, צריך ליצור מיפוי של מארח ואורח של היציאות והכתובות במכונה של האמולטור. יש שתי דרכים להגדיר ניתוב מחדש של רשת: שימוש בפקודות במסוף האמולטור ושימוש ב-Android כלי גשר לניפוי באגים (adb), כפי שמתואר בקטעים הבאים.

הגדרת הפניה אוטומטית דרך מסוף האמולטור

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

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

telnet localhost 5554

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

כדי להוסיף הפניה אוטומטית, משתמשים בכתובת הבאה:

redir add <protocol>:<host-port>:<guest-port>

כאשר הערך של <protocol> הוא tcp או udp, ו-<host-port> ו-<guest-port> הגדירו את בין המכונה לבין מערכת האמולציה.

לדוגמה, הפקודה הבאה מגדירה הפניה אוטומטית שמטפלת בכל חיבורי TCP נכנסים למחשב המארח (פיתוח) ב-127.0.0.1:5000 ומעביר אותם למערכת האמולציה בתאריך 10.0.2.15:6000:

redir add tcp:5000:6000

כדי למחוק הפניה אוטומטית, משתמשים בפקודה redir del. שפת תרגום רשימה של כל ההפניות האוטומטיות למופע מסוים, שימוש ב-redir list. למידע נוסף על הפקודות האלה ועל פקודות אחרות במסוף, עיינו במאמר שליחת פקודות במסוף האמולטור

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

הגדרת הפניה אוטומטית דרך adb

הכלי של Android Debug Bridge (adb) מספק העברה ליציאה אחרת, להגדרה של הפניית רשת מחדש. למידע נוסף, ראו הגדרת העברה ליציאה אחרת ב-adb התיעוד.

חשוב לדעת שכרגע adb לא מציע דרך להסיר הפניה אוטומטית אלא על ידי עצירת השרת adb.

קביעת הגדרות ה-DNS של האמולטור

בזמן ההפעלה, האמולטור קורא את רשימת שרתי ה-DNS שהמערכת שלכם בשימוש כרגע. לאחר מכן הוא מאחסן את כתובות ה-IP של עד ארבעה שרתים ברשת והיא מגדירה את הכינויים האלה בכתובות האמולציה 10.0.2.3, 10.0.2.4, 10.0.2.5 ו-10.0.2.6, לפי הצורך.

ב-Linux וב-macOS, האמולטור מקבל את כתובות שרת ה-DNS באמצעות ניתוח הקובץ /etc/resolv.conf. ב-Windows, האמולטור מקבל את הקוד כתובות באמצעות קריאה ל-API GetNetworkParams(). לתשומת ליבכם: בדרך כלל זה אומר שהאמולטור מתעלם מהתוכן של ה'מארחים' קובץ (/etc/hosts ב-Linux או ב-macOS, %WINDOWS%/system32/HOSTS ב-Windows).

כשמפעילים את האמולטור משורת הפקודה, אפשר להשתמש האפשרות -dns-server <serverList> לציין באופן ידני כתובות של שרתי DNS לשימוש, כאשר <serverList> מופרד בפסיקים רשימה של שמות שרתים או כתובות IP. אולי האפשרות הזו תועיל לך אם להיתקל בבעיות של רזולוציית DNS ברשת האמולציה (לדוגמה, 'שגיאת מארח לא ידוע' שמופיעה כשמשתמשים בדפדפן האינטרנט).

שימוש באמולטור עם שרת proxy

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

בשל אופי HTTP, חיבור ישיר לשרת אינטרנט וחיבור באמצעות תוצאת שרת proxy בבקשות GET שונות. האמולטור משכתב בצורה שקופה את אפשר לקבל בקשות מהמכשיר הווירטואלי לפני שמדברים עם שרת ה-proxy כדי שהוא יפעל.

אם האמולטור שלך חייב לגשת לאינטרנט דרך שרת proxy, ניתן להגדיר שרת proxy של HTTP בהתאמה אישית מהמסך פקדים מורחבים של האמולטור:

  1. כשהאמולטור פתוח, לוחצים על סמל האפשרויות הנוספות .
  2. לוחצים על הגדרות שרת proxy.
  3. קובעים את ההגדרות של ה-Proxy ל-HTTP.

לחלופין, אפשר להגדיר שרת proxy משורת הפקודה עם האפשרות -http-proxy <proxy> כשמפעילים את האמולטור. במקרה כזה, יש לציין את פרטי שרת ה-proxy ב-<proxy> באחד מהפורמטים הבאים:

http://<machineName>:<port>

או

http://<username>:<password>@<machineName>:<port>

האפשרות -http-proxy מאלצת את האמולטור להשתמש באפשרות שצוינה שרת proxy של HTTP או HTTPS עבור כל חיבורי ה-TCP היוצאים. ניתוב מחדש עבור UDP אינו נתמך.

לחלופין, אפשר להגדיר את משתנה הסביבה http_proxy בערך שעבורו רוצים להשתמש <proxy>. במקרה הזה, לא צריך לציין ערך עבור <proxy> בפקודה -http-proxy – האמולטור בודק את הערך של משתנה הסביבה http_proxy ומשתמשת בערך שלו באופן אוטומטי, אם הוא מוגדר.

אפשר להשתמש באפשרות -debug-proxy כדי לאבחן את שרת ה-proxy בעיות בחיבור.

מכונות של אמולטור Interconnect

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

נניח שהסביבה שלכם מיוצגת באופן הבא:

  • A היא מכונת הפיתוח שלך.
  • B היא מכונת האמולטור הראשונה, שרצה על A.
  • C הוא המכונה השנייה באמולטור, שרצה גם היא על A.

אם רוצים להריץ שרת על ב' שאליו C יתחבר, הגדירו ככה:

  1. מגדירים את השרת ב-B, בהאזנה ל 10.0.2.15:<serverPort>.
  2. במסוף B, מגדירים הפניה אוטומטית מ- A:localhost:<localPort> אל B:10.0.2.15:<serverPort>.
  3. ב-C, מבקשים מצד הלקוח להתחבר אל 10.0.2.2:<localPort> .

לדוגמה, אם רוצים להריץ שרת HTTP, בוחרים <serverPort> בתור 80 ו-<localPort> בתור 8080:

  • B מאזינה ב-10.0.2.15:80.
  • במסוף B, גיליון redir add tcp:8080:80.
  • C מתחבר אל 10.0.2.2:8080.

שליחת שיחה קולית או SMS למופע של אמולטור אחר

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

כדי להתחיל שיחה קולית מדומה למופע של אמולטור אחר:

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

    אפשר קובעים את מספר היציאה של המסוף של מכונת היעד על ידי בדיקת כותרת החלון, אם הוא פועל בחלון נפרד, אבל לא אם היא פועלת בחלון של כלים. מספר היציאה של המסוף מדווח כ-'Android Emulator (<port>)'.

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

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

כדי לשלוח הודעת SMS למופע של אמולטור אחר:

  1. מפעילים את אפליקציית ה-SMS, אם היא זמינה.
  2. צריך לציין את מספר היציאה של המסוף של מופע אמולטור היעד בתור כתובת ה-SMS.
  3. כותבים את הטקסט של ההודעה.
  4. שולחים את ההודעה. ההודעה מועברת למופע של אמולטור היעד.
  5. אפשר גם להתחבר למסוף אמולטור כדי לדמות שיחה קולית נכנסת או הודעת SMS נכנסת. מידע נוסף זמין במאמר הבא: אמולציה של טלפוניה אמולציית SMS.