חיבור בין מופעים של אמולטור

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

אמולטורים של Android מגרסה 36.5 ואילך

אמולטור Android בגרסה 36.5 ואילך מציע מודל רשת פשוט יותר שמחבר בין מופעים ברשת Wi-Fi משותפת.

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

אפשר למצוא אמולטורים ברשת הווירטואלית באמצעות טכנולוגיות כמו Network Service Discovery‏ (NSD) ו-Wi-Fi ישיר.

מכיוון שהאמולטורים נמצאים באותה רשת Wi-Fi, אפשר גם למצוא את כתובת ה-IP הספציפית של אמולטור ולהתחבר אליו ישירות ממופע אחר של אמולטור. כדי לקבל את כתובת ה-IP של ממשק ה-Wi-Fi הווירטואלי (wlan0), מריצים את הפקודה הבאה ממחשב המארח:

adb shell ip addr show wlan0

אמולטור Android בגרסה שקודמת לגרסה 36.5

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

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

יש שתי דרכים להגדיר הפניה אוטומטית ברשת:

  1. פקודות במסוף האמולטור: משתמשים במסוף המובנה כדי להגדיר מיפוי יציאות עבור מופע האמולטור הפועל.
  2. Android Debug Bridge (adb): משתמשים בפקודות 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.

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

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

נניח שהסביבה שלכם היא כזו:

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

אם רוצים להפעיל שרת ב-B שאליו 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.