每个正在运行的虚拟设备都提供一个控制台,让您可以查询和控制模拟设备环境。例如,您可以在应用在模拟器上运行时,使用控制台管理端口重定向、网络特性和电话事件。
以下命令要求您已有一个正在运行的模拟器。有关运行模拟器的更多信息,请参阅在 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 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
|
以 45 度增量逆时针旋转 AVD。 |
使模拟器崩溃 | 描述 |
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 调制解调器发送的一样。以“$GP”开头。sentence 。目前仅支持“$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}
|
将交流充电状态设置为 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 。您只能在呼叫的当前状态为 active 或 waiting 时才能将呼叫状态更改为 hold 。 |
gsm list
|
列出所有入站和出站呼叫及其状态。 |
gsm status
|
报告当前 GSM 语音/数据状态。值与 voice 和 data 命令中描述的值相同。 |
gsm signal {rssi|ber}
|
更改接下来 15 秒更新中报告的信号强度 (rssi) 和误码率 (ber)。以下列表描述了参数及其值
|
gsm signal-profile num
|
设置信号强度配置文件。num 是 0 到 4 之间的数字。 |
cdma ssource source
|
设置当前 CDMA 订阅源,其中 source 是一个基于网络的允许列表,包含 CDMA 运营商的订阅者及其值,如下所示
|
cdma prl_version version
|
转储当前首选漫游列表 (PRL) 版本。版本号是指在系统选择和获取过程中使用的 PRL 数据库中的信息。 |
管理模拟器上的传感器 | 描述 |
这些命令与 AVD 中可用的传感器有关。除了使用 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
|
生成一个模拟的入站短信。以下列表描述了参数及其值
以下示例将消息“hi there”发送到电话号码 4085555555 sms send 4085555555 hi there 控制台将短信转发到 Android 框架,后者再将其传递给模拟器上处理短信的应用(例如“消息”应用)。如果您传递 10 个数字,应用会将其格式化为电话号码。更长或更短的数字字符串会按您发送的方式显示。
|
指纹模拟 | 描述 |
finger touch fingerprint-id
|
模拟手指触摸传感器。 |
finger remove
|
模拟手指移开。 有关如何使用这些命令的说明,请参阅以下关于指纹模拟和验证的部分。 |
指纹模拟和验证

图 1. 指纹身份验证屏幕。
使用 finger
命令来模拟和验证应用的指纹身份验证。您需要 SDK Tools 24.3 或更高版本以及 Android 6.0(API 级别 23)或更高版本。
要模拟和验证指纹身份验证,请按照以下步骤操作
- 如果您还没有指纹 ID,请在模拟器中选择 设置 > 安全 > 指纹,然后按照注册说明注册新指纹。
- 设置您的应用以接受指纹身份验证。完成此设置后,您的设备会显示指纹身份验证屏幕。
- 当您的应用显示指纹身份验证屏幕时,转到控制台并输入
finger touch
命令和您创建的指纹 ID。这将模拟手指触摸。 - 然后,输入
finger remove
命令以模拟手指移开。您的应用应像用户触摸并移开指纹传感器一样做出响应。