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

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

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

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

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

إذا كان يجب على المحاكي الوصول إلى الإنترنت من خلال خادم وكيل، يمكنك تهيئة خادم وكيل HTTP مخصص من شاشة عناصر التحكم الموسعة في المحاكي:

  1. بعد فتح المحاكي، انقر على رمز المزيد .
  2. انقر على الإعدادات والخادم الوكيل.
  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. في وحدة التحكم ب، قم بإعداد عملية إعادة توجيه من A:localhost:<localPort> إلى B:10.0.2.15:<serverPort>.
  3. على C، اطلب من العميل الاتصال بـ 10.0.2.2:<localPort>.

على سبيل المثال، إذا أردت تشغيل خادم HTTP، اختَر <serverPort> على النحو 80 و<localPort> على النحو 8080:

  • ب يستمع على 10.0.2.15:80.
  • على وحدة التحكّم B، المشكلة redir add tcp:8080:80.
  • C يتصل بـ 10.0.2.2:8080.

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

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

لبدء محاكاة مكالمة صوتية لمثيل محاكي آخر:

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

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

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

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

لإرسال رسالة SMS إلى مثيل محاكي آخر:

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