adb常用命令合集
adb [-d/-e/-s]
- 如果只有一个设备/模拟器连接时,直接使用adb
- 如果有多个设备/模拟器连接,则需要为命令指定目标设备
- -d:指定当前唯一通过USB连接的Android设备未命令目标
- -e :指定当前唯一运行的模拟器为命令目标
- -s :指定相应号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是 -s <serialNumber> 参数,serialNumber 可以通过 adb devices 命令获取。如:
$ adb devices
List of devices attached
cf264b8f device
emulator-5554 device
输出里的 cf264b8f 和 emulator-5554 即为 serialNumber。比如这时想指定 cf264b8f 这个设备来运行 adb 命令获取屏幕分辨率:
adb -s cf264b8f shell wm size
启动/停止
- 启动:adb start-server
注:一般无需手动执行此命令,在运行adb命令时若发现adb server没有启动会自动调起
- 停止:adb kill-server
查看adb版本
adb version
以 root 权限运行 adbd
adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。
所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。
命令:
adb root
正常输出:
restarting adbd as root
现在再运行 adb shell,看看命令行提示符是不是变成 # 了?
有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。
相应地,如果要恢复 adbd 为非 root 权限的话,可以使用 adb unroot 命令。
指定adb server的网络端口: 默认端口为5037
adb -P <port> start-server
查询已连接的设备/模拟器
命令:
adb devices
输出示例:
List of devices attached
cf264b8f device
emulator-5554 device
输出格式为 [serialNumber] [state],serialNumber 即我们常说的 SN,state 有如下几种:
offline —— 表示设备未连接成功或无响应。
device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中