- 基本用法
- 命令语法
- 为命令指定目标设备
- 启动/停止
- 查看 adb 版本
- 以 root 权限运行 adbd
- 指定 adb server 的网络端口
- 设备连接管理
- 查询已连接设备/模拟器
- USB 连接
- 无线连接(需要借助 USB 线)
- 无线连接(无需借助 USB 线)
基本用法
命令语法
adb 命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
[-d|-e|-s <serialNumber>]
这一部分,直接使用 adb <command>
。
为命令指定目标设备
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
参数 | 含义 |
-d | 指定当前唯一通过 USB 连接的 Android 设备为命令目标 |
-e | 指定当前唯一运行的模拟器为命令目标 |
| 指定相应 serialNumber 号的设备/模拟器为命令目标 |
-s <serialNumber>
参数,serialNumber 可以通过 adb devices
$ adb devices List of devices attached cf264b8f device emulator-5554 device
cf264b8f
和 emulator-5554
即为 serialNumber。比如这时想指定 cf264b8f
adb -s cf264b8f shell wm size
遇到多设备/模拟器的情况均使用这几个参数为命令指定目标设备,下文中为简化描述,不再重复。
启动/停止
启动 adb server 命令:
adb start-server
(一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。)
停止 adb server 命令:
adb kill-server
查看 adb 版本
命令:
adb version
示例输出:
Android Debug Bridge version 1.0.36 Revision 8f855a3d9b35-android
以 root 权限运行 adbd
adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。
adb xxx
执行。这时可以 adb shell
然后 su
命令:
adb root
正常输出:
restarting adbd as root
adb shell
,看看命令行提示符是不是变成 #
adb root
命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds
,此时可以先安装 adbd Insecure,然后 adb root
adb unroot
指定 adb server 的网络端口
命令:
adb -P <port> start-server
默认端口为 5037。
设备连接管理
查询已连接设备/模拟器
命令:
adb devices
输出示例:
List of devices attached cf264b8f device emulator-5554 device
[serialNumber] [state]
,serialNumber 即我们常说的 SN,state 有如下几种:offline
device
no device
cf264b8f
与 emulator-5554
分别是它们的 SN。从 emulator-5554
常见异常输出:
- 没有设备/模拟器连接成功。 List of devices attached
- 设备/模拟器未连接到 adb 或无响应。 List of devices attached cf264b8f offline
USB 连接
通过 USB 连接来正常使用 adb 需要保证几点:
- 硬件状态正常。
包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。 - Android 设备的开发者选项和 USB 调试模式已开启。
可以到「设置」-「开发者选项」-「Android 调试」查看。
如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。 - 设备驱动状态正常。
这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。 - 通过 USB 线连接好电脑和设备后确认状态。 adb devices 如果能看到 xxxxxx device 说明连接成功。
无线连接(需要借助 USB 线)
除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦!
操作步骤:
- 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
- 将设备与电脑通过 USB 线连接。
应确保连接成功(可运行
adb devices
- 让设备在 5555 端口监听 TCP/IP 连接: adb tcpip 5555
- 断开 USB 连接。
- 找到设备的 IP 地址。
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 - 通过 IP 地址连接设备。
adb connect <device-ip-address>
这里的 <device-ip-address>
- 确认连接状态。adb devices如果能看到
<device-ip-address>:5555 device
说明连接成功。
adb connect <device-ip-address>
adb kill-server
断开无线连接
命令:
adb disconnect <device-ip-address>
无线连接(无需借助 USB 线)
注:需要 root 权限。
上一节「无线连接(需要借助 USB 线)」是官方文档里介绍的方法,需要借助于 USB 数据线来实现无线连接。
既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。
- 在 Android 设备上安装一个终端模拟器。
已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:Terminal Emulator for Android Downloads - 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
- 打开 Android 设备上的终端模拟器,在里面依次运行命令: su setprop service.adb.tcp.port 5555
- 找到 Android 设备的 IP 地址。
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 - 在电脑上通过 adb 和 IP 地址连接 Android 设备。
adb connect <device-ip-address>
这里的 <device-ip-address>
如果能看到 connected to <device-ip-address>:5555