إعداد شبكات Android Emulator

يوفّر المحاكي إمكانات متعدّدة الاستخدامات للربط بالشبكة يمكنك استخدامها لإعداد بيئات معقّدة للنمذجة والاختبار لتطبيقك. توضّح هذه الصفحة بنية شبكة المحاكي وإمكاناته.

مساحة عنوان الشبكة

يعمل كل مثيل من المحاكي خلف جهاز توجيه افتراضي أو خدمة جدار حماية افتراضي تعزله عن إعدادات وواجهات شبكة جهاز التطوير وعن الإنترنت. لا يمكن لجهاز محاكى رصد جهاز التطوير أو مثيلات المحاكي الأخرى على الشبكة. وهو يرصد فقط أنّه متصل عبر الإيثرنت بجهاز توجيه أو جدار حماية.

يدير جهاز التوجيه الافتراضي لكل آلة مساحة عنوان الشبكة 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 خادم نظام أسماء النطاقات الأول
‫10.0.2.4 / 10.0.2.5 / 10.0.2.6 خوادم نظام أسماء النطاقات الاختيارية الثاني والثالث والرابع
10.0.2.15 شبكة الجهاز المحاكي عند الاتصال باستخدام إيثرنت
‫10.0.2.16 شبكة الجهاز المحاكي عند الاتصال باستخدام شبكة Wi-Fi
127.0.0.1 واجهة إعادة التوجيه للجهاز المحاكى

تستخدم جميع مثيلات المحاكي قيد التشغيل عمليات تعيين العناوين نفسها. وهذا يعني أنّه إذا كان لديك مثيلان يعملان بشكل متزامن على جهازك، سيكون لكل منهما جهاز توجيه خاص به، وسيكون لكل منهما عنوان IP هو 10.0.2.15. يتم عزل المثيلات بواسطة جهاز توجيه ولا يمكنها رصد بعضها البعض على الشبكة نفسها. للحصول على معلومات حول كيفية السماح لمثيلات المحاكي بالتواصل عبر TCP/UDP، راجِع القسم حول ربط مثيلات المحاكي.

يتوافق العنوان 127.0.0.1 على جهاز التطوير مع واجهة الاسترجاع للمحاكي. للوصول إلى الخدمات التي تعمل على واجهة إعادة التوجيه في جهاز التطوير، استخدِم العنوان الخاص 10.0.2.2 بدلاً من ذلك.

تكون العناوين المخصّصة مسبقًا لجهاز محاكي خاصة بـ "محاكي Android" ومن المحتمل أن تكون مختلفة تمامًا على الأجهزة الحقيقية (التي من المحتمل أيضًا أن يتم فيها ترجمة عنوان الشبكة، وتحديدًا خلف جهاز توجيه أو جدار حماية).

القيود المفروضة على الشبكات المحلية

يمكن لتطبيقات Android التي تعمل على محاكي الاتصال بالشبكة المتاحة على محطة العمل. ومع ذلك، تتصل التطبيقات من خلال المحاكي وليس مباشرةً بالأجهزة، ويتصرف المحاكي كتطبيق عادي على محطة العمل. قد يؤدي ذلك إلى بعض القيود:

  • قد يتم حظر التواصل مع الجهاز المحاكي من خلال برنامج جدار الحماية الذي يتم تشغيله على جهازك.
  • قد يتم حظر الاتصال بالجهاز المحاكي من خلال جدار حماية أو جهاز توجيه آخر (مادي) متصل به جهازك.

يجب أن يكون جهاز التوجيه الافتراضي للمحاكي قادرًا على التعامل مع جميع اتصالات TCP وUDP والرسائل الصادرة نيابةً عن الجهاز المحاكى، شرط أن تسمح بيئة شبكة جهاز التطوير بذلك. لا توجد قيود مضمّنة على أرقام المنافذ أو نطاقاتها، بل القيود التي يفرضها نظام التشغيل والشبكة على المضيف فقط.

استنادًا إلى البيئة، قد لا يتمكّن المحاكي من توفير الدعم لبروتوكولات أخرى (مثل ICMP المستخدَم في "ping"). في الوقت الحالي، لا يتيح المحاكي استخدام IGMP أو البث المتعدد.

استخدام إعادة توجيه الشبكة

للتواصل مع مثيل محاكي خلف جهاز التوجيه الافتراضي، عليك إعداد إعادة توجيه الشبكة على جهاز التوجيه الافتراضي. يمكن للعملاء بعد ذلك الاتصال بمنفذ الضيف المحدّد على جهاز التوجيه، بينما يوجّه جهاز التوجيه حركة البيانات من وإلى هذا المنفذ إلى منفذ المضيف للجهاز المحاكى.

لإعداد عملية إعادة توجيه الشبكة، عليك إنشاء عملية ربط بين منافذ وعناوين المضيف والضيف على مثيل المحاكي. هناك طريقتان لإعداد إعادة توجيه الشبكة: استخدام أوامر وحدة تحكّم المحاكي واستخدام أداة Android Debug Bridge (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.

ضبط إعدادات نظام أسماء النطاقات للمحاكي

عند بدء التشغيل، يقرأ المحاكي قائمة خوادم نظام أسماء النطاقات التي يستخدمها نظامك حاليًا. بعد ذلك، يتم تخزين عناوين IP لما يصل إلى أربعة خوادم في هذه القائمة، ويتم إعداد أسماء مستعارة لها على العناوين المحاكية 10.0.2.3 و10.0.2.4 و10.0.2.5 و10.0.2.6، حسب الحاجة.

على نظامَي التشغيل Linux وmacOS، يحصل المحاكي على عناوين خادم نظام أسماء النطاقات (DNS) من خلال تحليل الملف /etc/resolv.conf. على أجهزة Windows، يحصل المحاكي على العناوين من خلال طلب بيانات من واجهة برمجة التطبيقات GetNetworkParams(). يُرجى العِلم أنّ هذا يعني عادةً أنّ المحاكي يتجاهل محتوى ملف "المضيفين" (/etc/hosts على Linux/macOS و%WINDOWS%/system32/HOSTS على Windows).

عند بدء المحاكي من سطر الأوامر، يمكنك استخدام الخيار -dns-server <serverList> لتحديد عناوين خوادم نظام أسماء النطاقات التي سيتم استخدامها يدويًا، حيث <serverList> هي قائمة بأسماء الخوادم أو عناوين IP مفصولة بفواصل. قد يكون هذا الخيار مفيدًا إذا واجهت مشاكل في التحويل باستخدام نظام أسماء النطاقات (DNS) في الشبكة المحاكية (على سبيل المثال، رسالة "خطأ في المضيف غير المعروف" تظهر عند استخدام متصفّح الويب).

استخدام المحاكي مع خادم وكيل

في العديد من شبكات الشركات، يرفض مشرفو الشبكة السماح بالاتصالات المباشرة بالإنترنت. بدلاً من ذلك، يجب أن تمر اتصالات الإنترنت عبر خادم وكيل محدّد. للوصول إلى الإنترنت على شبكة تتطلّب استخدام خادم وكيل، يجب أن يعرف المحاكي أنّ هناك خادم وكيل وأنّه بحاجة إلى الاتصال به.

بسبب طبيعة بروتوكول HTTP، يؤدي الاتصال المباشر بخادم الويب والاتصال عبر خادم وكيل إلى طلبات GET مختلفة. يعيد المحاكي كتابة طلبات GET بشكل شفاف من الجهاز الافتراضي قبل التواصل مع الخادم الوكيل لكي تعمل.

إذا كان المحاكي بحاجة إلى الوصول إلى الإنترنت من خلال خادم وكيل، يمكنك ضبط خادم وكيل HTTP مخصّص.

عند استخدام المحاكي داخل "استوديو Android"، يمكنك ضبط خادم وكيل باستخدام الإعدادات في قائمة "استوديو Android" (Settings > Appearance & Behavior > System Settings > HTTP Proxy). يمكنك العثور على مزيد من التفاصيل في إعداد خادم وكيل في "استوديو Android" ضمن مستندات Android Studio.

عند استخدام المحاكي بشكل مستقل (خارج Android Studio)، يمكنك ضبط إعدادات خادم وكيل من شاشة عناصر التحكّم الموسّعة في المحاكي باتّباع الخطوات التالية:

  1. بعد فتح المحاكي، انقر على المزيد .
  2. انقر على الإعدادات والخادم الوكيل (لا يتوفّر هذا الخيار إلا إذا لم يتم تشغيل المحاكي من Android Studio).
  3. حدِّد إعدادات خادم وكيل HTTP.

بدلاً من ذلك، يمكنك ضبط وكيل من سطر الأوامر باستخدام الخيار -http-proxy <proxy> عند بدء المحاكي. في هذه الحالة، حدِّد معلومات الخادم الوكيل في <proxy> بأحد التنسيقات التالية:

http://<machineName>:<port>

أو

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

يفرض الخيار -http-proxy على المحاكي استخدام خادم وكيل HTTP أو HTTPS المحدّد لجميع اتصالات TCP الصادرة. لا تتوفّر إمكانية إعادة التوجيه لبروتوكول UDP.

بدلاً من ذلك، يمكنك تحديد متغيّر البيئة http_proxy بالقيمة التي تريد استخدامها في <proxy>. في هذه الحالة، لن تحتاج إلى تحديد قيمة <proxy> في الأمر -http-proxy، إذ يتحقّق المحاكي من قيمة متغيّر البيئة http_proxy عند بدء التشغيل ويستخدم قيمته تلقائيًا إذا تم تحديدها.

يمكنك استخدام الخيار -debug-proxy لتشخيص مشاكل الاتصال بالخادم الوكيل.

ربط مثيلات المحاكي

للسماح لأحد مثيلات المحاكي بالتواصل مع مثيل آخر، عليك إعداد عملية إعادة توجيه الشبكة كما هو موضّح أدناه.

لنفترض أنّ بيئتك ممثّلة على النحو التالي:

  • 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.

إجراء مكالمة صوتية أو إرسال رسالة SMS إلى مثيل محاكي آخر

يعيد المحاكي توجيه المكالمات الصوتية والرسائل القصيرة المحاكية تلقائيًا من مثيل إلى آخر. لإجراء مكالمة صوتية أو إرسال رسالة SMS، استخدِم تطبيق "برنامج الاتصال" أو تطبيق الرسائل القصيرة SMS، على التوالي، من أحد المحاكيات.

لبدء مكالمة صوتية محاكاة إلى مثيل محاكي آخر، اتّبِع الخطوات التالية:

  1. شغِّل تطبيق "برنامج الاتصال" على مثيل المحاكي الأصلي.
  2. أدخِل رقم منفذ وحدة التحكّم الخاص بالجهاز الظاهري المستهدف كرقم للاتصال به.

    يمكنك تحديد رقم منفذ وحدة التحكّم للمثيل المستهدف من خلال التحقّق من عنوان النافذة، إذا كان يعمل في نافذة منفصلة، ولكن ليس إذا كان يعمل في نافذة أداة. يتم عرض رقم منفذ وحدة التحكّم على أنّه "محاكي Android (<port>)".

    بدلاً من ذلك، يعرض الأمر adb devices قائمة بالأجهزة الافتراضية التي تعمل وأرقام منافذ وحدة التحكّم الخاصة بها. لمزيد من المعلومات، يُرجى الاطّلاع على طلب البحث عن الأجهزة.

  3. انقر على زر الاتصال. تظهر مكالمة واردة جديدة في نسخة المحاكي المستهدَفة.

لإرسال رسالة SMS إلى مثيل محاكي آخر، اتّبِع الخطوات التالية:

  1. افتح تطبيق الرسائل القصيرة إذا كان متاحًا.
  2. حدِّد رقم منفذ وحدة التحكّم في مثيل المحاكي المستهدف كعنوان رسالة SMS.
  3. أدخِل نص الرسالة.
  4. أرسِل الرسالة. يتم تسليم الرسالة إلى مثيل المحاكي المستهدف.

يمكنك أيضًا الاتصال بوحدة تحكّم المحاكي لمحاكاة مكالمة صوتية أو رسالة SMS واردة. لمزيد من المعلومات، يُرجى الاطّلاع على محاكاة الاتصال الهاتفي ومحاكاة الرسائل القصيرة.