软件测试系列:移动端安卓APP测试必备之ADB命令 (一)
一、adb及其组件
adb全称为Android Debug Bridge,「Android调试桥」,是连接 Android 手机与 PC 端的桥梁,可以让用户在电脑上对手机进行全面的操作。
adb 是在 Android SDK中的tools目录下的一个工具,使用这个工具,可以直接操作和管理Android模拟器,或者真实的Android设备。
adb是一种功能多样的命令行工具,是一种客户端-服务器程序,包括以下三个组件:
- ADB client:运行在PC上,通过在命令行执行ADB,就启动了ADB Client 程序。比如Eclipse DDMS,Windows终端命令行,豌豆荚等。Client本质上就是Shell, 用来发送命令给Server
- ADB server:运行在PC上,作为ADB client的server 端,也作为adbd 服务进程的客户端
- adbd服务进程:作为daemon进程运行在Android系统上,以服务进程运行,Android系统启动时,由init程序启动adbd
二、adb工作原理
在PC HOST端,ADB会fork出一个守护进程(不是adbd),即ADB Server,而父进程(ADB Client)继续处理Client请求,所有的Client通过TCP端口号5037进行与Server 通信,而Server创建local socket与remote socket,前者用于和Client 通信,后者用来与远端进行通信,模拟器通过TCP,真机设备则通过usb。
当启动某个ADB客户端时,客户端会先检查是否有ADB服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听ADB客户端发出的命令,所有ADB客户端均通过端口5037与ADB服务器通信。
然后,服务器会与所有正在运行的设备建立连接。它通过扫描5555到5585 之间(该范围供前16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现ADB守护进程(adbd),便会与相应的端口建立连接。
例如:
模拟器1,控制台:5554
模拟器1,adb:5555
模拟器2,控制台:5556
模拟器2,adb:5557
依此类推
ADB client 与ADB server之间是通过tcp进行通信,adb server和adbd通过usb或者tcp 进行通信。ADB Server对本地的TCP 5037端口进行监听,等待ADB Client 的命令。
三、adb常用命令
1、查看 adb 版本,或验证adb是否安装:
adb version
2、查看帮助信息,查看 adb 所支持的所有命令
adb help
3、启动 adb 服务
adb start-server
ps:启动 adb 服务时,默认端口为5037,若想指定端口进行启动:
adb -P <port> start-server
4、关闭adb服务
adb kill-server
5、查看当前连接的设备,已连接的设备会显示出来
adb devices
ps:设备的状态有3种,device、offline,unauthorized状态,这3种状态的含义分别是:
device,正常状态可调试
offline,仅连接不能调试,原因很可能是adb与安卓系统不匹配
unauthorized,连接不能调试,原因可能是未在手机上同意调试
6、有时即使设备物理连接正常,用adb devices查看却没有设备,则需要使用adb connect命令手动连接一下:
adb connect HOST[:PORT]
常用的模拟器的默认端口号:
连接真机手机没有传输线,可以用ip,首先保证在同一个网段,使用:IP:5555(5555也可以省略)。用ip连接注意,因为ip会变,执行命令时要注意,不要操作了其他人的设备
7、断开连接:
adb disconnect HOST[:PORT]
作者: 千里和他的软件测试
软件测试学习交流: 软件测试交流群 172489141
银行金融业务交流: 软件测试学习交流群 52304542
接口自动化性能交流: 一个正经的测试群 188427938