章节索引 :

Android 模拟器的控制台命令

在前一小节中,我们学习了如何创建模拟器。本节课程我们学习如何使用模拟器的控制台。

每个正在运行的虚拟设备都提供了一个控制台,可查询和控制模拟设备的环境。例如,当我们的应用在模拟器上运行时,我们可以使用控制台来管理端口重定向、网络特性和电话事件等。

1. 启动和停止控制台会话

要访问模拟器控制台并输入命令,需要从计算机终端窗口中使用 telnet 连接到控制台端口,并提供模拟器的身份验证令牌。每当控制台显示 OK 时,表明它已准备好接受命令。

要连接到正在运行的虚拟设备的控制台,请执行以下操作:

第一步: 打开终端窗口并输入以下命令:

telnet localhost console-port

图片描述
上图中的 console-port5554,那如何确定自己模拟器的 console-port 是多少呢?
模拟器设置窗口的标题列出了控制台端口号,型如:Pixel_2_API_29:5554
图片描述
第二步: 控制台显示 OK 后,输入 auth auth_token 命令:

auth auth_token
  • auth_token 是从哪里获得呢?在第 1 步进行 telnet 连接时,命令行输出中已经告诉了我们 auto_token 就在 .emulator_console_auth_token 文件中。

  • .emulator_console_auth_token 文件内容如下:
    图片描述

  • 输入 auth 命令:
    图片描述

Tips:此时我们已经连上模拟器控制台并完成身份验证。

第三步: 连接到控制台后,输入控制台命令:

  • 模拟器控制台要求先进行身份验证,然后才能输入控制台命令,第2步我们已经完成了身份验证;

  • 输入 help 可查看控制台命令的列表并了解特定的命令;
    图片描述

第四步: 要退出控制台会话,请输入 quitexit

第五步: 下面是一个会话示例:

pt@Win10-Panda:~$ telnet localhost 5554
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
'C:\Users\panda\.emulator_console_auth_token'
OK
auth KeGgPVHDN7YifXfZ
Android Console: type 'help' for a list of commands
OK
help
Android console commands:
    help|h|?
    help-verbose
    ping
    automation
    event
    geo
    gsm
    cdma
    crash
    crash-on-exit
    kill
    restart
    network
    grpc
    power
    quit|exit
    redir
    sms
    avd
    qemu
    sensor
    physics
    finger
    debug
    rotate
    screenrecord
    fold
    unfold
    multidisplay
    icebox

Try 'help-verbose' for more description
Try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.
pt@Win10-Panda:~$

2. 模拟器控制台命令参考

下面整合和介绍了模拟器控制台常用命令及其参数的含义。

2.1 常规命令

命令 说明
avd {stop\start\status\name} 查询、控制和管理虚拟设备。
avd snapshot {list\save name\load name\delete name} 利用快照保存和恢复设备状态。
fold 折叠设备以显示其较小的屏幕配置(如果设备可折叠且当前处于展开状态)。
unfold 展开设备以显示其较大的屏幕配置(如果设备可折叠且当前处于折叠状态)。
kill 终止虚拟设备。
ping 检查虚拟设备是否正在运行。
rotate 以 45 度的增量逆时针旋转 AVD。

2.2 地理位置命令

命令 说明
geo fix longitude latitude satellites [altitude] 向模拟器发送简单的 GPS 定位。以十进制度为单位指定 longitude 和 latitude。使用 1 到 12 之间的数字指定用于确定位置的 satellites 数量,并以米为单位指定 altitude。
geo nmea sentence 向模拟设备发送 NMEA 0183 语句,就像是从模拟的 GPS 调制解调器发送的一样。让 sentence 以“KaTeX parse error: Expected 'EOF', got '”' at position 3: GP”̲开头。目前仅支持“GPGGA”和“$GPRCM”语句。以下示例是一个 GPGGA(全球定位系统定位数据)语句,它描述了 GPS 接收器接收的时间、位置和定位数据:

2.3 电源状态命令

命令 说明
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 之间的百分比。

2.4 网络连接状态命令

命令 说明
network status 检查网络状态以及当前的延迟和速度特性。
network delay latency 更改模拟网络延迟。
network speed speed 更改网络传输速率。

2.5 电话模拟命令

命令 说明
gsm {call\accept\cancel\busy} phonenumber 模拟电话的呼入、接听、挂断、繁忙。
gsm {data\voice} state data state 命令用于更改 GPRS 数据连接的状态,data voice state 则用于更改 GPRS 语音连接的状态。
gsm hold 将通话状态更改为 hold。只有在当前状态为 active 或 waiting 时,才能将通话状态更改为 hold。
gsm list 列出所有呼入电话和外拨电话及其通话状态。
gsm status 报告当前的 GSM 语音/数据连接状态。相关的值就是前述 voice 和 data 命令的值。

2.6 短信模拟命令

命令 说明
sms send sender-phone-number textmessage 生成收到的模拟短信。

3. 控制台命令实操

3.1 模拟电话

  1. 模拟10086来电;
gsm call 10086

图片描述

  1. 模拟接听来电;
gsm accept 10086

图片描述

  1. 模拟挂断来电;
gsm cancel 10086

图片描述

  1. 下面是完整会话示例。
pt@Win10-Panda:~$ telnet localhost 5554
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
'C:\Users\panda\.emulator_console_auth_token'
OK
auth KeGgPVHDN7YifXfZ
Android Console: type 'help' for a list of commands
OK
gsm call 10086
OK
gsm accept 10086
OK
gsm cancel 10086
OK

3.2 模拟短信

模拟10086来短信:

sms send This is a test text message

图片描述

  • 下面是完整会话示例。
pt@Win10-Panda:~$ telnet localhost 5554
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
'C:\Users\panda\.emulator_console_auth_token'
OK
auth KeGgPVHDN7YifXfZ
Android Console: type 'help' for a list of commands
OK
sms send This is a test text message
OK

4. 小结

本节课程我们主要学习了 Android 模拟器控制台的使用方法。本节课程的重点如下:

  • 模拟器控制台的连接及身份验证;
  • 常用控制台命令的实际操作。