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

כדי לבדוק אפליקציות שכוללות אינטראקציות בין כמה מכשירים, אפשר לחבר כמה מופעים של אמולטור 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.