Android Debug Bridge(adb)是 Android SDK Platform Tools 中的命令行工具,用于与 Android 设备或模拟器通信。它可以安装和调试应用、复制文件、打开设备 Shell、采集日志、生成错误报告,以及执行常见的设备诊断操作。
| :-- | -- |
|---|---|
adb version | 查看当前 adb 版本 |
adb help | 查看 adb 命令帮助 |
adb start-server | 启动本机 adb server |
adb kill-server | 停止本机 adb server |
adb server-status | 查看 server 状态与无线调试相关配置 |
adb reconnect | 重新连接设备 |
adb reconnect device | 重新连接设备端连接 |
adb reconnect offline | 重新连接处于 offline 状态的设备 |
adb 位于 android_sdk/platform-tools/。命令行使用时通常需要把该目录加入 PATH,也建议设置 ANDROID_HOME 指向 SDK 安装目录。
| :-- | -- |
|---|---|
adb devices | 列出连接到 server 的设备 |
adb devices -l | 列出设备并显示产品、型号等详细信息 |
adb get-state | 输出设备状态 |
adb get-serialno | 输出设备序列号 |
adb wait-for-device <command> | 等到设备连接后再执行命令 |
adb -s <serial> <command> | 指定某一台设备执行命令 |
adb -d <command> | 指定唯一 USB 设备执行命令 |
adb -e <command> | 指定唯一模拟器执行命令 |
设备常见状态:
device:已连接到 adb server,可执行命令offline:设备未响应,常见于授权弹窗未确认或连接异常unauthorized:设备未授权当前电脑调试no device:没有连接到设备$ adb devices -l
$ adb -s emulator-5554 shell getprop ro.product.model
$ adb wait-for-device shell getprop sys.boot_completed
| :-- | -- |
|---|---|
adb reboot | 重启设备 |
adb reboot bootloader | 重启到 bootloader / fastboot 模式 |
adb reboot recovery | 重启到 recovery 模式 |
adb root | 以 root 权限重启 adbd,仅部分开发镜像支持 |
adb unroot | 以非 root 权限重启 adbd |
adb remount | 重新挂载分区为可写,通常需要 root |
adb disable-verity | 禁用 verified boot 检查,通常仅调试镜像可用 |
| :-- | -- |
|---|---|
adb install app.apk | 安装 APK 到设备 |
adb install -r app.apk | 覆盖安装,保留应用数据 |
adb install -d app.apk | 允许安装低版本 APK |
adb install -g app.apk | 安装后授予清单中的运行时权限 |
adb install-multiple base.apk split.apk | 安装多 APK / split APK |
adb uninstall <package> | 卸载应用 |
adb uninstall -k <package> | 卸载应用但保留数据和缓存目录 |
$ adb install -r app-debug.apk
$ adb install-multiple base.apk config.arm64_v8a.apk
$ adb uninstall com.example.app
| :-- | -- |
|---|---|
adb shell pm list packages | 列出包名 |
adb shell pm list packages -3 | 仅列出第三方应用 |
adb shell pm list packages -s | 仅列出系统应用 |
adb shell pm list packages -f | 列出包名和 APK 路径 |
adb shell pm list packages -d | 列出已停用应用 |
adb shell pm list packages -e | 列出已启用应用 |
adb shell pm path <package> | 查看 APK 文件路径 |
adb shell dumpsys package <package> | 查看包的详细信息 |
adb shell am force-stop <package> | 强制停止应用 |
adb shell monkey -p <package> 1 | 启动指定包的默认入口 |
| :-- | -- |
|---|---|
adb push <local> <remote> | 从电脑复制文件到设备 |
adb pull <remote> [local] | 从设备复制文件到电脑 |
adb sync | 同步构建输出到设备,常用于平台开发 |
adb shell ls <path> | 列出设备目录 |
adb shell rm <path> | 删除设备文件 |
adb shell mkdir -p <path> | 创建设备目录 |
$ adb push app.apk /sdcard/Download/
$ adb pull /sdcard/Download/log.txt .
$ adb shell ls -lah /sdcard/Download
| :-- | -- |
|---|---|
adb shell | 打开交互式设备 Shell |
adb shell <command> | 在设备上执行单条命令 |
adb exec-out <command> | 执行命令并将原始输出写到本机 stdout |
adb shell getprop | 查看系统属性 |
adb shell getprop <key> | 查看指定系统属性 |
adb shell setprop <key> <value> | 设置系统属性 |
adb shell settings list global | 查看 global 设置 |
adb shell settings put global http_proxy host:port | 设置全局 HTTP 代理 |
adb shell settings put global http_proxy :0 | 清除全局 HTTP 代理 |
| :-- | -- |
|---|---|
adb shell input tap <x> <y> | 点击屏幕坐标 |
adb shell input swipe x1 y1 x2 y2 | 滑动屏幕 |
adb shell input text <text> | 输入文本,空格常写作 %s |
adb shell input keyevent 66 | 发送按键事件,66 为回车 |
adb shell wm size | 查看屏幕分辨率 |
adb shell wm density | 查看屏幕密度 |
adb shell wm size 1080x1920 | 临时修改分辨率 |
adb shell wm size reset | 重置分辨率 |
$ adb shell input tap 540 1800
$ adb shell input text "Hello%sAndroid"
$ adb shell input keyevent KEYCODE_HOME
| :-- | -- |
|---|---|
adb shell am start -n <package>/<activity> | 启动指定 Activity |
adb shell am start -a android.intent.action.VIEW -d <url> | 打开 URL |
adb shell am start -a android.intent.action.VIEW -t image/* | 打开图片查看器 |
adb shell am broadcast -a <action> | 发送广播 |
adb shell am startservice -n <component> | 启动服务 |
adb shell am force-stop <package> | 强制停止应用 |
adb shell pidof <package> | 查看进程 PID |
$ adb shell am start -a android.intent.action.VIEW -d https://developer.android.com
$ adb shell am force-stop com.example.app
| :-- | -- |
|---|---|
adb logcat | 打印设备日志,等同于 adb shell logcat |
adb logcat --help | 查看当前设备支持的 logcat 选项 |
adb logcat -c | 清空日志缓冲区 |
adb logcat -g | 查看日志缓冲区大小 |
adb logcat -G 16M | 设置日志缓冲区大小 |
adb logcat -d | 输出现有日志后退出 |
adb logcat -f /sdcard/log.txt | 在设备上写入日志文件 |
adb logcat -v time | 使用带时间的输出格式 |
adb logcat --pid=<pid> | 仅显示指定 PID 的日志 |
Logcat 过滤表达式格式为 tag:priority。优先级从低到高为:
V:VerboseD:DebugI:InfoW:WarningE:ErrorF:FatalS:Silent,不输出任何日志$ adb logcat "*:W"
$ adb logcat ActivityManager:I MyApp:D "*:S"
$ adb shell pidof -s com.example.app
$ adb logcat --pid=$(adb shell pidof -s com.example.app)
| :-- | -- |
|---|---|
adb shell dumpsys | 输出所有系统服务诊断信息 |
adb shell dumpsys -l | 列出可用系统服务 |
adb shell dumpsys <service> | 输出指定服务信息 |
adb shell dumpsys <service> -h | 查看指定服务的帮助 |
adb shell dumpsys battery | 查看电池状态 |
adb shell dumpsys meminfo <package> | 查看应用内存信息 |
adb shell dumpsys activity activities | 查看 Activity 栈 |
adb shell dumpsys window displays | 查看显示窗口信息 |
| :-- | -- |
|---|---|
adb bugreport | 生成完整错误报告 |
adb bugreport <path> | 将错误报告保存到指定路径 |
adb shell screencap /sdcard/screen.png | 在设备上保存截图 |
adb exec-out screencap -p > screen.png | 直接保存截图到电脑 |
adb shell screenrecord /sdcard/demo.mp4 | 录制屏幕视频 |
adb shell screenrecord --time-limit 30 /sdcard/demo.mp4 | 限制录屏时长 |
screenrecord 默认最长录制 3 分钟,不录制音频。录制完成后可用 adb pull 下载到电脑。
Android 11(API 30)及以上支持通过无线调试配对,不需要先使用 USB 线连接。电脑和设备需要在同一无线网络内,并使用最新 SDK Platform Tools。
| :-- | -- |
|---|---|
adb pair <ip>:<pairing-port> | 使用设备上显示的配对端口进行配对 |
adb connect <ip>:<debug-port> | 连接已配对设备的调试端口 |
adb disconnect <ip>:<debug-port> | 断开指定无线设备 |
adb mdns services | 查看 mDNS 发现的 adb 服务 |
adb mdns track-services --proto-text | 持续查看 mDNS 服务详情 |
$ adb pair 192.168.1.20:37123
# 输入设备上显示的配对码
$ adb connect 192.168.1.20:42115
$ adb devices
旧设备通常需要先通过 USB 连接,然后把 adbd 切换到 TCP 端口:
$ adb devices
$ adb tcpip 5555
$ adb shell ip addr show wlan0
$ adb connect 192.168.1.20:5555
完成后可断开 USB。调试结束建议执行:
$ adb disconnect 192.168.1.20:5555
$ adb usb
$ adb install -r app-debug.apk
$ adb shell monkey -p com.example.app 1
$ adb logcat MyApp:D "*:S"
$ adb exec-out screencap -p > screen.png
$ adb shell screenrecord --time-limit 30 /sdcard/demo.mp4
$ adb pull /sdcard/demo.mp4 .
$ adb shell pm path com.example.app
$ adb pull /data/app/~~xxx/base.apk ./example.apk
$ adb shell dumpsys activity activities | grep mResumedActivity
在 Windows PowerShell 中可改用:
$ adb shell dumpsys activity activities | Select-String "mResumedActivity"
| :-- | -- |
|---|---|
unauthorized | 解锁设备并确认 RSA 授权弹窗;必要时撤销 USB 调试授权后重连 |
offline | 重新插拔、执行 adb reconnect,或重启 adb server |
| 无线调试找不到设备 | 确认同一网络、mDNS 可用,并检查 adb server-status |
| 多个设备冲突 | 使用 adb -s <serial> 指定设备 |
| 命令无权限 | 需要 root、debuggable 应用或对应系统权限时,普通设备可能无法执行 |
| 日志太多 | 使用 tag:priority 过滤,并用 "*:S" 收窄范围 |