כל מכשיר וירטואלי שפועל מספק קונסולה שמאפשרת לשלוח שאילתות ולשלוט בסביבת המכשיר המדומה. לדוגמה, אפשר להשתמש במסוף כדי לנהל את הפניית היציאה, את מאפייני הרשת ואת אירועי הטלפוניה בזמן שהאפליקציה פועלת באמולטור.
כדי להשתמש בפקודות הבאות, צריך להריץ אמולטור. מידע נוסף על הפעלת אמולטור זמין במאמרים הפעלת אפליקציות באמולטור Android והפעלת האמולטור משורת הפקודה.
איך מתחילים ומפסיקים סשן במסוף
כדי לגשת למסוף ולהזין פקודות מחלון מסוף, משתמשים ב-telnet כדי להתחבר ליציאת המסוף ומזינים את אסימון האימות. בכל פעם שמוצג במסוף OK, הוא מוכן לקבל פקודות. אין הנחיה טיפוסית.
כדי להתחבר למסוף של מכשיר וירטואלי פועל:
- פותחים חלון טרמינל ומזינים את הפקודה הבאה:
- אחרי שהמסוף מציג
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 (ethernet and cellular only)
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.
הפניות לפקודות באמולטור
בטבלה הבאה מתוארות הפקודות במסוף של האמולטור, עם הפרמטרים והערכים שלהן:
טבלה 1. פקודות במסוף של האמולטור
| פקודות כלליות | תיאור |
|---|---|
avd {stop|start|status|name}
|
האפליקציה שולחת שאילתות למכשיר הווירטואלי, שולטת בו ומנהלת אותו, באופן הבא:
|
avd snapshot {list|save name|load name|delete
name}
|
שומר את מצב המכשיר בתמונות מצב ומשחזר אותו, באופן הבא:
בדוגמה הבאה נשמרת תמונת מצב בשם avd snapshot save firstactivitysnapshot |
fold
|
קיפול המכשיר כדי להציג את הגדרת תצורה של מסך הקטן יותר, אם המכשיר מתקפל והוא לא מקופל כרגע. |
unfold
|
פותח את המכשיר כדי להציג את הגדרת תצורה של מסך הגדול יותר, אם המכשיר מתקפל והוא מקופל כרגע. |
kill
|
המכשיר הווירטואלי מופסק. |
ping
|
בודקת אם המכשיר הווירטואלי פועל. |
rotate
|
מסובב את ה-AVD נגד כיוון השעון במרווחים של 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. פוסטים ב-Unicode ממופים הפוך בהתאם למקלדת הנוכחית של המכשיר, ותווים לא נתמכים מושמטים ללא הודעה. |
| אמצעי בקרה למצב הסוללה | תיאור |
power display
|
מציג את מצב הסוללה והמטען. |
power ac {on|off}
|
מגדיר את מצב הטעינה של מתאם ה-AC ל-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 שמכיל מידע שמשמש במהלך תהליך הבחירה והרכישה של המערכת. |
| ניהול חיישנים באמולטור | תיאור |
הפקודות האלה קשורות לחיישנים שזמינים ב-AVD. בנוסף לשימוש בפקודה sensor, אפשר לראות ולשנות את ההגדרות באמולטור במסך Virtual sensors בכרטיסיות Accelerometer ו-Additional sensors.
|
|
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 | תיאור |
sms send sender-phone-number textmessage
|
יצירת הדמיה של הודעת SMS נכנסת. ברשימה הבאה מתוארים הפרמטרים והערכים שלהם:
בדוגמה הבאה נשלחת ההודעה "hi there" למספר הטלפון 4085555555: sms send 4085555555 hi there המסוף מעביר את הודעת ה-SMS למסגרת Android, שמעבירה אותה לאפליקציה באמולטור שמטפלת ב-SMS, כמו אפליקציית Messages. אם מעבירים 10 מספרים, האפליקציה מעצבת אותם כמספר טלפון. מחרוזות מספריות ארוכות או קצרות יותר מוצגות כמו שהן נשלחו.
|
| סימולציה של טביעת אצבע | תיאור |
finger touch fingerprint-id
|
מדמה אצבע שנוגעת בחיישן. |
finger remove
|
מדמה הסרה של אצבע.
הוראות לשימוש בפקודות האלה מופיעות בקטע הבא בנושא סימולציה ואימות של טביעות אצבע. |
סימולציה ואימות של טביעת אצבע
איור 1. מסך אימות באמצעות טביעת אצבע.
משתמשים בפקודה finger כדי לדמות ולאמת את אימות טביעת האצבע באפליקציה. נדרשת גרסה SDK Tools 24.3 ואילך ו-Android 6.0 (רמת API 23) ואילך.
כדי לדמות ולאמת אימות באמצעות טביעת אצבע, פועלים לפי השלבים הבאים:
- אם עדיין אין לכם מזהה טביעת אצבע, צריך לרשום טביעת אצבע חדשה באמולטור. לשם כך, בוחרים באפשרות הגדרות > אבטחה > טביעת אצבע ופועלים לפי הוראות הרישום.
- מגדירים את האפליקציה כך שתקבל אימות בטביעת אצבע. אחרי שמבצעים את ההגדרה הזו, מוצג במכשיר מסך אימות טביעת האצבע.
- בזמן שהאפליקציה מציגה את מסך אימות טביעת האצבע, עוברים למסוף ומזינים את הפקודה
finger touchואת מזהה טביעת האצבע שיצרתם. הפקודה הזו מדמה מגע של אצבע. - לאחר מכן, מזינים את הפקודה
finger removeכדי לדמות הסרה של האצבע.האפליקציה צריכה להגיב כאילו משתמש נגע בחיישן טביעת האצבע ואז הרים את האצבע ממנו.