لاختبار التطبيقات التي تتضمّن تفاعلات بين أجهزة متعددة، يمكنك ربط عدة مثيلات من Android Emulator لكي تتواصل مع بعضها البعض. تعتمد طريقة إنشاء اتصال على إصدار المحاكي الذي تستخدمه.
الإصدار 36.5 والإصدارات الأحدث من محاكي Android
يتوفّر في الإصدار 36.5 والإصدارات الأحدث من "محاكي Android" نموذج شبكات مبسط يربط مثيلات عبر شبكة 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 Emulator الأقدم من 36.5
إذا كنت تستخدم إصدارًا سابقًا من "محاكي Android"، لن يكون التواصل المباشر بين مثيلات المحاكي متاحًا تلقائيًا. يعمل كل مثيل من المحاكي خلف جهاز توجيه افتراضي خاص به، ما يؤدي إلى عزله عن الشبكة المحلية والمحاكيات الأخرى.
لتفعيل التواصل، يجب إعداد إعادة توجيه الشبكة يدويًا. تتضمّن هذه العملية إنشاء عملية ربط تعيد توجيه الزيارات من منفذ معيّن على جهازك المضيف إلى منفذ على الجهاز المحاكى، مع تجاوز جهاز التوجيه الافتراضي.
يمكنك ضبط عملية إعادة التوجيه على الشبكة بطريقتَين:
- أوامر وحدة تحكّم المحاكي: استخدِم وحدة التحكّم المضمّنة لإعداد عمليات ربط المنافذ لمثيل المحاكي قيد التشغيل.
- أداة 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.
ربط مثيلات المحاكي
للسماح لأحد مثيلات المحاكي بالتواصل مع مثيل آخر، عليك إعداد عملية إعادة توجيه الشبكة كما هو موضّح في الخطوات التالية.
لنفترض أنّ بيئتك هي كما يلي:
- A هو جهاز التطوير.
- B هي أول مثيل للمحاكي يعمل على A.
- C هي مثيل المحاكي الثاني، ويتم تشغيلها أيضًا على A.
إذا أردت تشغيل خادم على الجهاز B ليتصل به الجهاز C، عليك إعداده على النحو التالي:
- اضبط الخادم على الجهاز B للاستماع إلى
10.0.2.15:<serverPort>. - في وحدة التحكّم B، اضبط عملية إعادة التوجيه من A:
localhost:<localPort>إلى B:10.0.2.15:<serverPort>. - على الجهاز 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.