adb 的连接状态及重置

Feb 13 2020

在使用 adb 手动调试 Android 设备的时候,通常不会太在意当前设备的连接状态,比如 adb devices 一下发现设备不在线,执行一下 adb kill-server 或者重启设备即可。那如果要设计自动化测试该怎么办呢?读取 adb devices 来查看设备 list 的方式比较土,而且会对多个已经连接的设备带来影响,而其实 adb 已经提供了这样判断的命令

判断一个设备是否在线,则使用

1
2
3
4
adb get-state <device-id>

# 比如
adb get-state fabcieda

会返回几种状态:device,offline,bootloader

device 表示在线,可以直接交互,我们通常关心的也是这个

offline 表示掉线了,如果是 unauthorized 状态也返回这个信息

我们想要重新连接 offline 状态的设备,可以执行这样的指令

1
2
# 重新连接 offline/unauthorized 状态的设备
adb reconnect offline

如果返回信息显示找不到设备,那么可以使用

1
2
# 强制重新连接设备
adb reconnect

如果设备端异常导致连接的问题,则可以使用

1
2
# 从设备端主动进行强制重连
adb reconnect device

但这个命令一般不常用,可能会导致设备端 adb,毕竟设备端的稳定性和控制性不如 pc 端

经过上面几个命令的配合,就能很好的串起来一段自动化测试状态转移的流程,这样操作的好处是避免粗暴使用 adb kill-server 的操作,它将所有的连接都断开,对其他处于 device 状态并且正在执行测试的设备造成影响