注:官方文档请见:https://developer.android.com/studio/command-line/adb
adb简介
adb的全称为Android Debug Bridge:安卓调试桥,adb是一个C/S架构的命令行工具,用于通过电脑端与模拟器或真实设备交互,adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。
adb架构
adb由三部分组成:
运行在PC端的adb client:
命令行程序“adb”用于从shell或脚本中运行adb命令,当Android设备的adbd和PC端的server建立连接后,adb client可以向adb server发送服务请求。
运行在PC端的adb server:
adb server是运行在主机上的一个后台进程,它的作用在于检测Android设备的连接和断开,以及模拟器实例的启动和停止,adb server还需要将adb client的请求通过USB或者tcp的方式发送到对应的adbd上,adb服务启动后,Windows可以在任务管理器中找到adb.exe这个进程。
运行在设备端的常驻进程adb demon(adbd)
adbd是一个后台进程,在Android设备或模拟器系统中运行,它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。
执行adb shell ps | findstr adbd,可以找到该后台进程。
adb端口
5037为adb默认端口,若5037端口被占用,我们在使用adb命令时会找不到设备,解决方法如下:
找到使用该端口的进程PID:netstat -aon | findstr 5037
通过PID找到对应的进程名:tasklist | findstr PID号
这里5037端口刚好被adb进程占用,若被其他进程占用时,可进入任务管理器杀掉该进程,也可直接用命令杀掉该进程
使用命令关掉该进程:taskkill /pid PID号
指定adb server的网络端口:adb -P 端口号 start-server