Android 调试桥(ADB) 是一种功能多样的命令行工具,可与设备进行通信。ADB命令可用于执行各种设备操作(例如:安装和调试应用),并提供对 Unix shell的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:在开发计算机上运行,用于发送命令
  • 守护程序(adbd):在每个设备上作为后台进程运行,用于在设备上运行命令
  • 服务器:在开发计算机上作为后台进程运行,用于管理客户端与守护程序之间的通信

工作原理

当您启动某个 ADB 客户端时, 该客户端会现检查是否有 adb 服务器进程正在运行。如果没有,则启动服务器进程。服务器在启动后与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令,所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

连接方式

  1. USB连接
  2. 无线连接

基本命令

查询设备

可通过如下命令查询已连接的设备列表

$ adb devices -l
List of devices attached
127.0.0.1:62001        device product:R11 model:OPPO_R11 device:shamu

adb 会针对每个设备输出以下状态信息:

  • 序列号:由 adb 创建的字符串,用于通过端口号唯一标识设备
  • 连接状态:可能是以下几项之一:
    • offline: 设备未连接到 adb 或没有相应
    • device:设备已连接到 adb 服务器
    • no device:未连接任何设备

将命令发送至指定设备

若由多个设备在运行,您在发出 adb 命令时必须指定目标设备。如下:

$ adb devices
List of devices attached
127.0.0.1:62001        device product:R11 model:OPPO_R11 device:shamu
127.0.0.1:62002        device product:R11 model:OPPO_R11 device:shamu

$ adb -s 127.0.0.1:62001 install helloworld.apk

设置端口转发

通过 forward 命令设置任意端口转发,将特定主机端口上的请求转发到设备的其他端口。以下示例设置了主机端口 6100 到设备端口 7100的转发

adb forward tcp:6100 tcp:7100

ADB shell

发出单个命令:

adb [-s serial_number] shell shell_command

交互式 shell:

adb [-s serial_number] shell

常用命令

# 安装应用
adb install test.apk 

# 卸载应用
adb uninstall cn.com.test.mobile 

# 卸载app 但保留数据和缓存文件
adb uninstall -k cn.com.test.mobile 

# 列出手机装的所有app 的包名
adb shell pm list packages 

# 列出除了系统应用的第三方应用包名
adb shell pm list packages -3 

# 清除应用数据与缓存
adb shell pm clear cn.com.test.mobile 

# 启动应用
adb shell am start -ncn.com.test.mobile/.ui.SplashActivity 

# 向所有组件广播 BOOT_COMPLETED (开机广播)
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED   

# 强制停止应用
adb shell am force-stop cn.com.test.mobile 

# 查看日志
adb logcat 

# 清除log 缓存
adb logcat -c 

# 重启
adb reboot 

# 获取序列号
adb get-serialno 

# 查看Android 系统版本
adb shell getprop ro.build.version.release 

# 查看占用内存前10 的app
adb shell top -s 10 

# 从本地复制文件到设备
adb push <local> <remote> 

# 从设备复制文件到本地
adb pull <remote> <local> 

# 模拟按键,点亮屏幕
adb shell input keyevent 224

# 滑动
adb shell input swipe 300 1000 300 500

# 输入文本
adb shell input text hello 

# 截图
adb shell screencap /sdcard/screen.png

参考