يوفّر كل جهاز افتراضي قيد التشغيل وحدة تحكّم تتيح لك الاستعلام عن بيئة الجهاز التي تتم محاكاتها والتحكم فيها. على سبيل المثال، يمكنك استخدام وحدة التحكّم لإدارة إعادة توجيه المنفذ وخصائص الشبكة والأحداث الهاتفية أثناء تشغيل تطبيقك على المحاكي.
تتطلب الأوامر التالية أن يكون لديك محاكي قيد التشغيل. لمزيد من المعلومات حول تشغيل محاكي، يمكنك الاطّلاع على تشغيل التطبيقات على محاكي Android وتشغيل المحاكي من سطر الأوامر.
بدء جلسة وحدة تحكُّم وإيقافها
للوصول إلى وحدة التحكّم وإدخال الأوامر من نافذة طرفية، استخدِم telnet
للاتصال بمنفذ وحدة التحكّم وتقديم الرمز المميّز للمصادقة. في كل مرة تعرض فيها وحدة التحكم
حسنًا، تكون جاهزة لقبول الأوامر. لا يتوفّر طلب عادي.
للربط بوحدة التحكّم على جهاز افتراضي قيد التشغيل:
- افتح نافذة المحطة الطرفية وأدخل الأمر التالي:
- بعد أن تعرض وحدة التحكّم
OK
، أدخِل الأمرauth auth_token
. - بعد الاتصال بوحدة التحكّم، أدخِل أوامر وحدة التحكّم.
- للخروج من جلسة وحدة التحكّم، أدخِل
quit
أوexit
.
telnet localhost console-port
يسرد عنوان نافذة المحاكي رقم منفذ وحدة التحكّم عند تشغيله في نافذة منفصلة
ولكن ليس عند التشغيل في نافذة أداة. على سبيل المثال، قد يكون عنوان النافذة الخاص بالمحاكي الذي يستخدم منفذ وحدة التحكّم 5554 هو Pixel8_API_34:5554
. يطبع أيضًا الأمر adb devices
قائمة بالأجهزة الافتراضية قيد التشغيل وأرقام المنافذ في وحدة التحكّم الخاصة بها. لمزيد من المعلومات، يُرجى الاطّلاع على طلب البحث عن الأجهزة.
ملاحظة: يرصد المحاكي الاتصالات على المنافذ من 5554 إلى 5585
ويقبل الاتصالات الواردة من localhost
فقط.
قبل أن تتمكن من إدخال أوامر وحدة التحكم، تتطلب وحدة التحكم المحاكية المصادقة. يجب أن تتطابق السمة auth_token
مع محتوى ملف .emulator_console_auth_token
في الدليل الرئيسي.
إذا لم يكن هذا الملف متوفرًا، ينشئ الأمر telnet localhost console-port
الملف الذي يحتوي على رمز مصادقة تم إنشاؤه عشوائيًا. لإيقاف
المصادقة، احذف الرمز المميّز من ملف
.emulator_console_auth_token
أو أنشِئ ملفًا فارغًا في حال لم يكن متوفّرًا.
أدخِل help
أو help command
أو help-verbose
للاطّلاع على قائمة بأوامر وحدة التحكّم، ومعرفة معلومات عن أوامر محدّدة.
إليك مثال على الجلسة:
$ telnet localhost 5554 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Android Console: Authentication required Android Console: type 'auth <auth_token>' to authenticate Android Console: you can find your <auth_token> in '/Users/me/.emulator_console_auth_token' OK auth 123456789ABCdefZ Android Console: type 'help' for a list of commands OK help-verbose Android console command help: help|h|? Prints a list of commands help-verbose Prints a list of commands with descriptions ping Checks if the emulator is alive automation Manages emulator automation event Simulates hardware events geo Geo-location commands gsm GSM related commands cdma CDMA related commands crash Crashes the emulator instance crash-on-exit Simulates crash on exit for the emulator instance kill Terminates the emulator instance restart Restarts the emulator instance network Manages network settings power Power related commands quit|exit Quits control session redir Manages port redirections sms SMS related commands avd Controls virtual device execution qemu QEMU-specific commands sensor Manages emulator sensors physics Manages physical model finger Manages emulator finger print debug Controls the emulator debug output tags rotate Rotates the screen clockwise by 90 degrees screenrecord Records the emulator's display fold Folds the device unfold Unfolds the device multidisplay Configures the multi-display nodraw turn on/off NoDraw mode. (experimental) resize-display resize the display resolution to the preset size virtualscene-image customize virtualscene image for virtulscene camera proxy manage network proxy server settings phonenumber set phone number for the device try 'help <command>' for command-specific help OK exit Connection closed by foreign host.
مرجع طلبات المحاكي
ويصف الجدول التالي أوامر وحدة التحكم المحاكية بالمعلمات والقيم الخاصة بها:
طلبات عامة | الوصف |
---|---|
avd {stop|start|status|name}
|
طلبات البحث في الجهاز الافتراضي وعناصر التحكّم فيه وإدارته على النحو التالي:
|
avd snapshot {list|save name|load name|delete
name}
|
يحفظ هذا الإعداد حالة الجهاز ويستعيدها في اللقطات، كما يلي:
يحفظ المثال التالي لقطة باسم
avd snapshot save firstactivitysnapshot |
fold
|
يعمل هذا الإجراء على طيّ الجهاز لعرض إعدادات شاشته الأصغر إذا كان الجهاز قابلاً للطي وغير مطوي حاليًا. |
unfold
|
يفتح الجهاز لعرض الإعدادات الأكبر للشاشة، إذا كان الجهاز قابلاً للطي ومطويًا في الوقت الحالي. |
kill
|
إنهاء الجهاز الافتراضي |
ping
|
يتحقّق مما إذا كان الجهاز الافتراضي قيد التشغيل. |
rotate
|
تدوير متوسّط مدة المشاهدة عكس اتجاه عقارب الساعة بمقدار 45 درجة |
إيقاف المحاكي | الوصف |
crash
|
تعطل المحاكي أثناء تنفيذ التطبيق. |
crash-on-exit |
يتعطّل المحاكي عند الخروج من التطبيق. |
علامات تصحيح الأخطاء | الوصف |
debug tags ...
|
لتفعيل أو إيقاف رسائل تصحيح الأخطاء من أجزاء محدَّدة من المحاكي.
يجب أن تكون المَعلمة tags قيمة من قائمة علامات تصحيح الأخطاء التي تظهر عند
تنفيذ
يسمح المثال التالي باستخدام العلامة debug radio |
إعادة توجيه المنفذ | الوصف |
redir list
|
يسرد عملية إعادة توجيه المنفذ الحالية. |
redir add protocol:host-port:guest-port
|
تتم إضافة عملية إعادة توجيه جديدة للمنفذ على النحو التالي:
|
redir del protocol:host-port
|
تحذف عملية إعادة توجيه المنفذ.
|
الموقع الجغرافي | الوصف |
تضبط هذه السياسة الموقع الجغرافي الذي يتم الإبلاغ عنه للتطبيقات التي تعمل داخل المحاكي من خلال إرسال إصلاح نظام تحديد المواقع العالمي (GPS) إلى المحاكي. يمكنك إصدار أحد أمر |
|
geo fix longitude latitude [altitude] [satellites] [velocity]
|
ويتم إرسال إصلاح بسيط من نظام تحديد المواقع العالمي (GPS) إلى المحاكي.
حدِّد longitude وlatitude
بالدرجات العشرية. استخدِم رقمًا من 1 إلى 12 لتحديد عدد
satellites الذي سيتم استخدامه لتحديد موضع الجهاز،
وحدِّد altitude بالأمتار
وvelocity بالعقد.
|
geo nmea sentence
|
تُرسِل جملة NMEA 0183 إلى الجهاز الذي تمّت محاكاته كما لو كان مُرسَلاً من
مودم لنظام تحديد المواقع العالمي (GPS) تمّت محاكاته. ابدأ sentence بـ '$GP'.
يُسمح حاليًا باستخدام جمل "$GPGGA" و"$GPRCM" فقط. في ما يلي مثال على جملة GPGGA (بيانات إصلاح نظام تحديد المواقع العالمي) التي تحصل على بيانات الوقت والموضع والإصلاح لجهاز استقبال نظام تحديد المواقع العالمي (GPS):
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx |
الأحداث المتعلّقة بالأجهزة المزيفة | الوصف |
event types
|
تُدرج جميع أنواع الأحداث الزائفة. بالنسبة إلى الأحداث التي تتضمّن رموزًا، يظهر عدد الرموز بين قوسين على اليسار.
event types event <type> can be an integer or one of the following aliases: EV_SYN EV_KEY (405 code aliases) EV_REL (2 code aliases) EV_ABS (27 code aliases) EV_MSC EV_SW (4 code aliases) EV_LED EV_SND EV_REP EV_FF EV_PWR EV_FF_STATUS EV_MAX OK |
event send types [types ...]
|
يتم إرسال نوع واحد أو أكثر من الأحداث المزيفة. |
event codes type
|
يسرد رموز الأحداث لنوع الحدث الزائف المحدّد. |
event send type[:code]:[value] [...]
|
يتم إرسال حدث واحد أو أكثر يتضمّن رموزًا وقيم رموز اختيارية.
لاكتشاف الحدث المطلوب إرساله بالضبط، يمكنك استخدام الأمر في ما يلي الأحداث التي يتم إنشاؤها عند الضغط على زر التشغيل: adb shell getevent -lt /dev/input/event12: EV_KEY KEY_POWER DOWN /dev/input/event12: EV_SYN SYN_REPORT 00000000 /dev/input/event12: EV_KEY KEY_POWER UP /dev/input/event12: EV_SYN SYN_REPORT 00000000على سبيل المثال، لمحاكاة الضغط مع الاستمرار على زر التشغيل، أرسِل حدثَين من نوع EV_KEY لفتح مفتاح التشغيل والضغط على مفتاح التشغيل:
event send EV_KEY:KEY_POWER:0 OK event send EV_KEY:KEY_POWER:1 OK |
event text message
|
ترسل سلسلة من الأحرف تحاكي الضغط على المفاتيح. يجب أن تكون الرسالة سلسلة UTF-8. يتم ربط مشاركات يونيكود عكسيًا وفقًا للوحة مفاتيح الجهاز الحالية، ويتم تجاهل الأحرف غير المتوافقة بدون تنبيه صوتي. |
عناصر التحكّم في حالة التشغيل | الوصف |
power display
|
عرض حالة البطارية والشاحن |
power ac {on|off}
|
يتم ضبط حالة شحن التيار المتردد على on أو off .
|
power status {unknown|charging|discharging|not-charging|full}
|
يغيّر حالة البطارية كما هو محدّد. |
power present {true|false}
|
تضبط هذه السياسة حالة البطارية. |
power health {unknown|good|overheat|dead|overvoltage|failure}
|
يضبط هذا الإعداد حالة البطارية. |
power capacity percent
|
يتم ضبط حالة سعة البطارية المتبقية كنسبة مئوية من 0 إلى 100. |
حالة الاتصال بالشبكة | الوصف |
network status
|
للتحقّق من حالة الشبكة وخصائص التأخير والسرعة الحالية |
network delay latency
|
تغيّر وقت استجابة الشبكة التي تمت محاكاتها. ويتيح لك المحاكي محاكاة مستويات متنوعة من وقت استجابة الشبكة حتى تتمكن من اختبار التطبيق في بيئة معتادة أكثر في ظروف التشغيل الفعلية. ويمكنك ضبط مستوى أو نطاق وقت الاستجابة عند بدء تشغيل المحاكي أو يمكنك استخدام وحدة التحكم لتغيير وقت الاستجابة أثناء تشغيل التطبيق في المحاكي. تنسيق الشبكة latency هو أحد التنسيقات التالية (الأرقام تكون بالمللي ثانية): تنسيق وقت استجابة الشبكة:
لضبط وقت الاستجابة عند بدء تشغيل المحاكي، استخدِم emulator -netdelay gprs emulator -netdelay 40,100 لإجراء تغييرات على تأخير الشبكة أثناء تشغيل المحاكي، عليك الاتصال بوحدة التحكّم واستخدام
الأمر network delay gprs network delay 40 100 |
network speed speed |
يتيح لك المحاكي محاكاة معدلات مختلفة لنقل البيانات عبر الشبكة.
يمكنك ضبط معدل النقل أو نطاق عمليات النقل عند بدء تشغيل المحاكي، أو يمكنك استخدام وحدة التحكّم لتغيير المعدّل أثناء تشغيل التطبيق في المحاكي. تنسيق الشبكة تنسيق سرعة الشبكة:
لضبط سرعة الشبكة عند بدء تشغيل المحاكي، استخدِم emulator -netspeed gsm @Pixel_API_26 emulator -netspeed 14.4,80 @Pixel_API_26 لإجراء تغييرات على سرعة الشبكة أثناء تشغيل المحاكي، عليك الاتصال بوحدة التحكّم
واستخدام الأمر network speed 14.4 80 |
network capture {start|stop} file |
إرسال حزم البيانات إلى ملف. توضِّح القائمة التالية المَعلمات وقيم المَعلمات:
|
محاكاة الاتصالات الهاتفية | الوصف |
يشتمل محاكي Android على أجهزة مودم تمت محاكاتها عبر GSM وCDMA والتي تتيح لك محاكاة وظائف الاتصال الهاتفي في المحاكي. على سبيل المثال، يمكنك باستخدام بروتوكول GSM محاكاة المكالمات الهاتفية الواردة وإنشاء اتصالات البيانات وإنهائها. وباستخدام CDMA، يمكنك توفير مصدر الاشتراك وقائمة التجوال المفضلة. يتعامل نظام Android مع المكالمات التي تمت محاكاتها تمامًا كما يتعامل مع المكالمات الفعلية. المحاكي لا يتوافق مع صوت المكالمات. | |
gsm {call|accept|cancel|busy} phonenumber
|
مَعلمات gsm هي كما يلي:
|
gsm {data|voice} state
|
يغيِّر الأمر data state حالة اتصال بيانات GPRS، ويغيّر الأمر data voice state حالة الاتصال الصوتي بخدمة GPRS، على النحو التالي:
|
gsm hold
|
تغيير حالة المكالمة إلى hold لا يمكنك تغيير
حالة الاتصال إلى hold إلا عندما تكون حالتها الحالية هي active أو
waiting .
|
gsm list
|
يسرد جميع المكالمات الواردة والصادرة وحالاتها. |
gsm status
|
يُبلغ هذا الإعداد عن حالة صوت/بيانات بروتوكول GSM الحالية. والقيم هي تلك الموضّحة للأمرين voice وdata .
|
gsm signal {rssi|ber}
|
تغيِّر قوة الإشارة (rssi) ومعدّل أخطاء البت (ber) الذي تم الإبلاغ عنه في الثواني الـ 15 التالية من التحديث. توضِّح القائمة التالية المَعلمات وقيمها:
|
gsm signal-profile num
|
تعيين الملف الشخصي لقوة الإشارة.
num هو رقم من 0 إلى 4.
|
cdma ssource source
|
تضبط هذه السياسة مصدر الاشتراك الحالي عبر CDMA، حيث يمثّل source قائمة مسموح بها مستندة إلى الشبكة تحتوي على المشتركين لدى مشغّل شبكة الجوّال CDMA وقيمهم على النحو التالي:
|
cdma prl_version version
|
لتفريغ إصدار قائمة التجوال (PRL) الحالي المفضّل. رقم الإصدار لقاعدة بيانات PRL التي تحتوي على المعلومات المستخدمة أثناء عملية اختيار النظام واكتسابه. |
إدارة أدوات الاستشعار في المحاكي | الوصف |
تتعلّق هذه الأوامر
بأدوات الاستشعار المتوفرة في "متوسّط مدة المشاهدة". بالإضافة إلى استخدام الأمر sensor ، يمكنك الاطّلاع على الإعدادات وضبطها في المحاكي في شاشة أجهزة الاستشعار الافتراضية ضمن علامتَي التبويب مقياس التسارع وأدوات الاستشعار الإضافية.
|
|
sensor status |
تعرض هذه البطاقة جميع أدوات الاستشعار وحالتها. في ما يلي مثال على ناتج الأمر sensor status :
|
sensor get sensor-name
|
يحصل على إعدادات sensor-name . ويوضّح المثال التالي قيمة
أداة استشعار التسارع:
sensor get acceleration acceleration = 2.23517e-07:9.77631:0.812348
تشير قيم |
sensor set sensor-name value-x:value-y:value-z
|
تحدد قيم sensor-name . ويحدّد المثال التالي
أداة استشعار التسارع على القيم x وy وz
مفصولة بنقطتين.
sensor set acceleration 2.23517e-07:9.77631:0.812348 |
محاكاة الرسائل القصيرة | الوصف |
sms send sender-phone-number textmessage
|
إنشاء رسالة قصيرة SMS واردة في وضع المحاكاة. توضِّح القائمة التالية المَعلمات وقيمها:
يرسل المثال التالي الرسالة "مرحبًا بك" إلى رقم الهاتف 4085555555: sms send 4085555555 hi there تعيد وحدة التحكّم توجيه الرسالة القصيرة إلى إطار عمل Android، ويمررها إلى تطبيق على المحاكي يتعامل مع الرسائل القصيرة، مثل تطبيق "الرسائل". وإذا مررت 10 أرقام، سيحدّدها التطبيق كرقم هاتف. تعرض السلاسل الرقمية الأطول أو الأقصر الطريقة التي أرسلتها بها.
|
محاكاة بصمة الإصبع | الوصف |
finger touch fingerprint-id
|
يحاكي هذا الزر إصبعًا يلمس أداة الاستشعار. |
finger remove
|
محاكاة لإزالة الأصابع
للحصول على تعليمات حول طريقة استخدام هذه الأوامر، يمكنك الاطّلاع على القسم التالي حول محاكاة بصمة الإصبع والتحقّق من صحتها. |
محاكاة بصمة الإصبع والتحقّق من صحتها
استخدِم الأمر finger
لمحاكاة مصادقة تطبيقك ببصمة الإصبع والتحقق من صحتها. تحتاج إلى الإصدار 24.3 أو إصدار أحدث من حزمة SDK والإصدار Android 6.0 (المستوى 23 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.
لمحاكاة المصادقة ببصمة الإصبع والتحقق من صحتها، اتبع الخطوات التالية:
- إذا لم يكن لديك رقم تعريف بصمة إصبع حتى الآن، يمكنك تسجيل بصمة إصبع جديدة في المحاكي من خلال النقر على الإعدادات > الأمان > بصمة الإصبع واتّباع تعليمات التسجيل.
- ابدأ بإعداد تطبيقك لقبول المصادقة ببصمة الإصبع. بعد إجراء هذا الإعداد، يعرض جهازك شاشة المصادقة ببصمة الإصبع.
- أثناء عرض تطبيقك لشاشة المصادقة ببصمة الإصبع، انتقِل إلى وحدة التحكّم
وأدخِل الأمر
finger touch
ورقم تعريف بصمة الإصبع الذي أنشأته. يحاكي هذا لمس الجهاز بالإصبع. - بعد ذلك، أدخِل الأمر
finger remove
لمحاكاة إزالة الإصبع.من المفترض أن يستجيب تطبيقك كما لو لمس المستخدم إصبعه ثم أزال إصبعه من أداة استشعار بصمة الإصبع.