ADB 命令大全:从连接调试到应用管理

ADB(Android Debug Bridge)是 Android 开发和排障最常用的命令行工具之一。
这篇文章按“能直接拿来用”的思路整理了高频命令,并给出典型场景示例。

一、准备与连接

1) 查看 adb 版本

adb version

用于确认本机 SDK Platform Tools 是否可用。

2) 启动/重启 adb 服务

adb start-server
adb kill-server
adb start-server

当设备列表异常、端口占用、连接不稳定时,优先重启 adb 服务。

3) 查看已连接设备

adb devices
adb devices -l
  • devices:显示序列号与状态(device / unauthorized / offline
  • -l:附加品牌、型号、传输方式等信息

4) 指定设备执行命令

多设备并行调试时建议显式指定序列号:

adb -s YOUR_SERIAL shell getprop ro.product.model

二、日志与排障

1) 实时查看 logcat

adb logcat

2) 只看指定 Tag

adb logcat -s ActivityManager Flutter:D *:S

含义:

  • ActivityManager 默认级别
  • Flutter:D 仅显示 Flutter 的 Debug 及以上
  • *:S 其余 Tag 静默

3) 导出日志到文件

adb logcat -v time > android.log

-v time 会在日志前添加时间戳,便于复盘问题时间线。


三、应用安装、卸载、启动

1) 安装 APK

adb install app-release.apk
adb install -r app-release.apk
adb install -r -d app-debug.apk
  • -r:覆盖安装(保留数据)
  • -d:允许降级安装(debug 场景常用)

2) 卸载应用

adb uninstall com.example.app
adb uninstall -k com.example.app
  • 默认:删除应用和数据
  • -k:保留数据与缓存目录

3) 启动应用 Activity

adb shell am start -n com.example.app/.MainActivity

四、包管理(pm)高频命令

这部分是线上排障最常见的一组。

1) 查询设备已安装包

adb shell pm list packages
adb shell pm list packages -3
adb shell pm list packages | grep example
  • -3:仅第三方应用

2) 查看某包 APK 安装路径(你要求的命令)

adb shell pm path com.xg.xxxx

典型输出:

package:/data/app/~~AbCdEf12345/com.xg.xxxx-XYZ/base.apk

这个命令常用于:

  • 确认目标包是否真的安装在设备上
  • 配合 adb pull 导出 APK 做二次分析

3) 导出 APK 到本地

adb shell pm path com.xg.xxxx
adb pull /data/app/~~AbCdEf12345/com.xg.xxxx-XYZ/base.apk ./com.xg.xxxx.apk

建议先执行第一条获取真实路径,再执行 pull

4) 查询当前前台应用

adb shell dumpsys window | grep mCurrentFocus

用于快速确认“当前显示的是哪个页面/进程”。


五、文件传输与系统信息

1) 上传文件到设备

adb push ./test.txt /sdcard/Download/test.txt

2) 从设备下载文件

adb pull /sdcard/Download/test.txt ./test.txt

3) 查看设备属性

adb shell getprop ro.build.version.release
adb shell getprop ro.product.model
adb shell getprop ro.product.cpu.abi

六、截图、录屏、输入模拟

1) 屏幕截图

adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png ./screen.png

2) 屏幕录制

adb shell screenrecord /sdcard/demo.mp4
adb pull /sdcard/demo.mp4 ./demo.mp4

3) 模拟点击与输入

adb shell input tap 540 1200
adb shell input text "hello_adb"
adb shell input keyevent 66
  • keyevent 66 等价回车键

七、无线调试(Android 11+)

1) 配对与连接(示意)

adb pair 192.168.1.10:37123
adb connect 192.168.1.10:5555
adb devices

在同一局域网下,无线调试可减少 USB 反复插拔。


八、实战脚本:一键导出目标包 APK

下面是一个可直接复用的 Bash 脚本,自动拿路径并导出 APK:

#!/usr/bin/env bash
set -euo pipefail

PKG="com.xg.xxxx"
OUT="./${PKG}.apk"

APK_PATH=$(adb shell pm path "$PKG" | sed -n 's/^package://p' | tr -d '\r' | head -n 1)

if [ -z "$APK_PATH" ]; then
  echo "Package not found: $PKG"
  exit 1
fi

echo "Found apk path: $APK_PATH"
adb pull "$APK_PATH" "$OUT"
echo "Done -> $OUT"

如果你在 Windows PowerShell 下使用,可把解析部分改为 PowerShell 语法。


九、常见问题速查

1) device unauthorized

  • 设备端未授权 USB 调试
  • 重新插拔后确认弹窗并点击“允许”

2) device offline

  • adb kill-server && adb start-server
  • 更换数据线/USB 端口

3) 命令执行慢或卡顿

  • 检查是否多设备冲突(记得 -s
  • 关闭高频日志输出窗口再重试

结语

ADB 的价值不在“命令多”,而在“遇到问题时能快速定位”。
建议把本文中你常用的 10~15 条命令沉淀成团队脚本,能显著提升联调和排障效率。