在移动应用开发和测试过程中,模拟器是不可或缺的工具。而掌握模拟器控制台命令,能让你更灵活地控制虚拟设备环境,提升开发和测试效率。本文将详细介绍如何启动、使用模拟器控制台,并带你深入了解各类常用命令。
一、控制台会话的启动与停止
每个运行中的虚拟设备都提供了控制台接口,通过它可以发送命令来查询和控制设备状态。想要使用控制台,首先需要建立连接并完成身份验证。
1. 连接控制台
打开终端窗口,输入以下命令连接到指定端口的模拟器:
telnet localhost console-port
其中,模拟器监听的端口范围是 5554 到 5585,且仅接受来自本地主机(localhost)的连接。你可以通过adb devices
命令查看当前运行的虚拟设备及其对应的控制台端口号。
2. 身份验证
连接成功后,控制台会提示需要身份验证。此时需输入:
auth auth_token
这里的auth_token
可在用户 HOME 目录下的.emulator_console_auth_token
文件中找到。该文件的特性如下:
- 若文件不存在,执行
telnet localhost console-port
命令时会自动创建,且包含随机生成的令牌 - 若要停用身份验证,可删除文件中的令牌,或创建一个空文件(若文件原本不存在)
3. 会话操作
- 查看命令列表:输入
help
(基础列表)、help command
(特定命令详情)或help-verbose
(带描述的命令列表) - 退出会话:输入quit或exit
$ 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
# 此处省略命令列表输出
exit
Connection closed by foreign host.
二、常用模拟器控制台命令详解
掌握各类控制台命令,能让你轻松模拟设备状态、硬件事件等,满足不同的测试需求。
1. 常规命令
用于管理虚拟设备的基本运行状态:
avd {stop|start|status|name}
:管理虚拟设备执行,包括停止(stop)、启动(start)、查询状态(status,返回 running 或 stopped)、查询名称(name)kill
:直接终止虚拟设备实例ping
:检查模拟器是否正常运行rotate
:将屏幕以 45 度为增量逆时针旋转
2. 端口重定向命令
用于管理主机与模拟器之间的端口映射:
redir list
:列出当前所有端口重定向配置redir add protocol:host-port:guest-port
:添加新的端口重定向,其中protocol
只能是 tcp 或 udp,- host-port是主机上的端口,guest-port
是模拟器接收数据的端口redir del protocol:host-port
:删除指定的端口重定向配置
3. 地理位置命令
模拟设备的 GPS 定位信息,适用于测试依赖位置的应用:
-
geo fix longitude latitude [altitude] [satellites] [velocity]
:发送简单 GPS 定位。参数说明:longitude和latitude
:以十进制度为单位的经纬度satellites
:用于定位的卫星数量(1-12 之间)altitude
:海拔高度(单位:米)velocity
:速度(单位:节)
-
geo nmea sentence
:发送 NMEA 0183 语句(需要以GP开头),目前支持GPGGA、GPRCM类型
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
该语句可模拟 GPS 接收器接收的时间、位置和定位数据。
4. 虚假硬件事件命令
模拟各类硬件事件,用于测试设备对物理操作的响应:
event types
:列出所有可模拟的硬件事件类型(如 EV_KEY、EV_REL 等)event codes type
:列出指定事件类型的具体事件代码event send type[:code]:[value] [...]
:发送一个或多个虚假事件,可指定事件类型、代码和值event text message
:发送字符串模拟按键输入(消息需为 UTF-8 格式,不支持的字符会被自动舍弃)
5. 电源状态控制命令
模拟设备的电池和充电状态:
power display
:显示当前电池和充电器状态power 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 之间的百分比)
6. 传感器管理命令
控制模拟器中的各类传感器,测试应用对传感器数据的处理:
sensor status
:列出所有传感器及其启用状态(如加速度传感器、陀螺仪等)sensor get sensor-name
:获取指定传感器的当前值(以 x:y:z 坐标形式返回,如加速度传感器的三维数值)sensor set sensor-name value-x:value-y:value-z
:设置指定传感器的数值
三、总结
模拟器控制台命令为开发者提供了强大的设备控制能力,从基本的设备启停、端口配置,到复杂的地理位置模拟、传感器数据设置,覆盖了测试过程中的多种场景。通过本文的介绍,相信你已经掌握了控制台的连接方法和核心命令的使用。在实际开发中,灵活运用这些命令,能有效提升测试效率,确保应用在不同设备状态下的稳定性。