adb 命令大全(Android 调试桥常用命令详解)
adb(Android Debug Bridge,Android 调试桥)是 Android SDK 提供的一个通用命令行工具,它充当 PC 与 Android 设备之间的通信桥梁,可用于安装调试应用、查看日志、抓取系统信息、传输文件、自动化测试等几乎所有的设备交互场景。无论是日常开发排查 Bug,还是测试同学做稳定性、性能验证,adb 都是必备技能。本文按"基础环境 / 日志 / 应用 / 系统 / 文件 / 数据库"六大主题,系统梳理 adb 最常用的命令。
1、基础环境命令
这一组命令用于管理 adb 服务本身,是使用其他命令前的热身。掌握它们能在 adb 连接异常时快速自愈。
adb start-server // 启动 adb 服务
adb kill-server // 终止 adb 服务(连接异常时先 kill 再 start)
adb version // 查看 adb 版本
adb help // 查看帮助,列出所有命令与参数
adb root // 以 root 权限重启 adbd(需设备支持)
adb remount // 将 system 分区重新挂载为可读写,操作系统目录时很重要
adb reboot // 重启设备
adb reboot bootloader // 重启进入刷机模式
adb reboot recovery // 重启进入恢复模式
adb shell // 进入设备的 shell 交互环境
adb shell dumpsys activity activities // 查看 Activity 回退栈2、日志相关
2.1、查看与保存日志
logcat 是排查问题最常用的入口。直接运行会输出全部日志,也可重定向到文件留存;由于 logcat 自带缓存,若只想看当前开始的日志,需先清空历史缓存。
adb logcat // 显示全部日志
adb logcat > c:\test.log // 将日志保存到文件(覆盖写)
adb logcat >> c:\test.log // 追加写
adb logcat -c && adb logcat // 先清空缓存,再从当前开始显示
adb logcat -v time // 输出中保留日志时间
adb logcat -v time -s Test > test.txt // 打印带时间且 tag 为 Test 的日志,覆盖写入文件2.2、过滤日志
线上日志往往海量,需要按 tag 或关键字过滤。可以用 -s 按 tag 过滤,也可以借助 grep 做更灵活的关键字匹配(grep 运行在 shell 中,需系统支持)。
// 按 tag name 过滤
adb logcat -s TAG_NAME
adb logcat -s TAG_NAME_1 TAG_NAME_2 // 同时过滤多个 tag
adb logcat -s TEST
adb logcat -s TEST MYAPP
// 使用 grep 关键字过滤
adb logcat | grep MyApp
adb logcat | grep -i myapp // 忽略大小写
adb logcat | grep "Exception"
adb logcat | grep "Exception\|Error" // 匹配多个关键字2.3、日志优先级
每条日志都有优先级,过滤时可指定级别,只输出该级别及更高的日志。优先级从低到高依次为:
- V(Verbose)细则,最低优先级
- D(Debug)调试
- I(Info)信息
- W(Warn)警告
- E(Error)错误
- F(Fatal)致命
- S(Silent)静默,最高优先级,不打印任何信息
adb logcat *:E // 只输出 Error 及以上级别的日志
adb logcat -c // 清除日志缓存3、应用(APK)相关
3.1、安装与卸载
// 安装 apk
adb install test.apk
adb install -r test.apk // 覆盖安装,保留数据和缓存
adb install -d test.apk // 允许降级(低版本覆盖高版本)
adb install -s test.apk // 安装到 sd 卡
// 卸载 apk
adb uninstall <package_name>
adb uninstall -k <package_name> // -k:卸载应用但保留配置和缓存文件3.2、应用信息查询
adb shell dumpsys package <package_name> // 查看 app 全部信息:action、codepath、version、权限等
adb shell pm path <package_name> // 查看 apk 安装路径
adb shell pm list permissions // 查看手机中所有权限
adb shell dumpsys package <package_name> | grep version // 查看 app 版本信息
// pm path 输出示例(普通 app 位于 data/app 下):
// package:/data/app/com.tencent.test-1/base.apk版本信息说明:若同一条记录出现两个 versionCode/versionName,则该应用为系统应用——上面一行是升级后的版本,下面一行是系统自带的原始版本。
3.3、Activity、Service 与广播
// 查看当前获得焦点的包名与 Activity
adb shell dumpsys window | grep mCurrentFocus
// 启动指定 Activity
adb shell am start -n <package_name>/.<activity_class_name>
// 启动 Service(-n 指定组件,-a 指定 action)
adb shell am startservice -n <package_name>/.<service_class_name>
adb shell am startservice -a "android.intent.action.CALL"
// 发送广播(可携带参数:-es 字符串、-ei 整型、-ez 布尔)
adb shell am broadcast -a "android.intent.action.MY_ACTION"
adb shell am broadcast -a "android.intent.action.MY_ACTION" --es test_string "this is test string"查看当前焦点窗口的输出形如:
mCurrentFocus=Window{3bd0b18 u0 com.android.settings/com.asu.msettings.AsuSettingsActivity}3.4、清理数据与启动耗时
adb shell pm clear <package_name> // 清除应用所有数据与缓存
adb shell pm path <package_name> // 输出安装包的 apk 路径
// 测量应用启动耗时(-W 表示等待启动完成)
adb shell am start -W <package_name>/.<activity_class_name>-W 的返回结果示例:
Status: ok
Activity: com.cc.test/.PainterMainActivity
ThisTime: 355 // 当前 Activity 启动耗时
TotalTime: 355 // 应用启动总耗时
WaitTime: 365 // 从 startActivity 到第一帧完全显示的总耗时
Complete说明:衡量启动速度以 WaitTime 为准,它表示从发起 startActivity 到应用第一帧完全渲染出来的完整时间。
3.5、进程与内存
adb shell ps <package_name|PID> // 查看某 app 进程信息(部分设备不支持按包名查询)
adb shell ps | grep <package_name> // 兼容写法:配合 grep 过滤进程
adb shell kill <PID> // 杀掉指定进程(常用于复现 Bug)
adb shell dumpsys meminfo <package_name|PID> // 查看单个 app 的内存占用
adb shell getprop | grep heapgrowthlimit // 查看单个应用的最大内存限制meminfo 输出中的 Heap size 同时包含 Dalvik Heap 与 Native Heap,日常所说的"内存上限"指 Dalvik Heap。以 heapgrowthlimit 为例:
[dalvik.vm.heapgrowthlimit]: [128m]说明:当 Dalvik Heap 超过该上限(如 128M)时,应用极易发生 OOM。
3.6、电量与稳定性测试
// 获取单个 app 的电量消耗(Battery Historian,Android 5.0+)
adb shell dumpsys batterystats > <package_name> > xxx.txt
// 再用 historian 脚本把原始数据转成可读 html:
// python historian.py xxx.txt > xxx.html
// 跑 monkey 做稳定性 / 随机事件压测
adb shell monkey -p <package_name> -v 500 // -p 指定包名,-v 反馈级别,500 为事件数
// 让 app 进入 full_backup 状态(需 AndroidManifest 配置 allowBackup="true")
adb shell bmgr fullbackup <package_name>4、系统信息相关
4.1、设备型号与分辨率
adb shell cat /system/build.prop // 查看设备名称等属性(豌豆荚等应用据此获取设备名)
adb shell wm size // 查看屏幕分辨率(最简洁)
adb shell wm density // 查看屏幕密度
adb shell dumpsys window | grep Surface // 另一种查看分辨率的方式
adb shell dumpsys window displays // 查看显示设备信息wm size 的输出形如:
Physical size: 1080x19204.2、系统版本、序列号与连接管理
adb shell getprop | grep version // 查看系统版本(ro.build.version.release)
adb shell getprop | grep product // 查看 product、board、brand、cpu 等型号
adb get-serialno // 获取设备序列号
adb devices // 查看已连接设备当连接多台设备时,需用参数指定目标设备,否则命令无法区分:
adb [-d|-e|-s <serial_number>] <command>
// -d:唯一真机
// -e:唯一模拟器
// -s:指定序列号
// adb devices 输出示例:
// List of devices attached
// 1b71651 device
// 12sdfsd device
// 进入指定设备:
adb -s 1b71651 shell4.3、WiFi、服务与闹钟
adb shell cat data/misc/wifi/*.conf // 查看 wifi 密码(需 root)
adb shell cat /sys/class/net/wlan0/address // 查看 wifi mac 地址
adb shell service list // 查看后台系统服务列表
adb shell dumpsys alarm // 查看系统设置的闹钟
adb shell dumpsys power // 查看 wakelock(不合理使用会加剧耗电)4.4、系统内存与耗电
adb shell cat /proc/meminfo // 查看系统整体内存占用
adb shell dumpsys meminfo // 查看各进程详细内存占用
adb shell procrank // 另一种进程内存查看方式(非所有设备支持)
adb shell top // 查看各进程 cpu 与内存占用
adb shell dumpsys batterystats > xxx.txt // 导出系统耗电信息procrank 输出涉及四个内存指标,含义区别如下:
- VSS(Virtual Set Size):虚拟耗用内存,包含共享库占用的内存
- RSS(Resident Set Size):实际使用的物理内存,包含共享库
- PSS(Proportional Set Size):实际使用的物理内存,按比例分摊共享库
- USS(Unique Set Size):进程独自占用的物理内存,不含共享库
其中 Total PSS 即应用真正占据的内存大小,可用于判断哪些程序更耗内存。
5、文件操作相关
5.1、push 与 pull
adb push <local> <remote> // 拷贝本地文件 / 目录到设备
adb pull [-a] <remote> <local> // 从设备拷贝文件 / 目录,-a 保留时间戳与权限5.2、目录与文件管理
adb shell ls [-al] // 列出目录内容,-al 查看详细信息
adb shell cd <folder> // 进入文件夹
adb shell cat <filename> // 查看文件内容
adb shell rename path/oldfile path/newfile // 重命名文件
adb shell rm path/filename // 删除文件
adb shell rm -r <folder> // 删除文件夹及其下所有内容
adb shell mv path/file newpath/file // 移动文件
adb shell cp file newpath/file1 // 拷贝文件
adb shell mkdir path/folder // 创建目录
adb shell chmod 777 filename // 设置文件最高读写权限5.3、免 root 查看应用数据
未 root 的设备直接进入 data/data 会提示无权限。可在 data/data 目录下用 run-as 切换到目标应用身份,从而进入其包目录查看文件,再用 cp 或 mv 拷贝到 sdcard 做进一步操作。
run-as <package_name> // 以指定应用身份进入其 data/data 目录6、数据库相关
调试时若只是想查看数据库中的某张表或某个字段,无需每次 pull 出来,直接在命令行用 sqlite3 操作更快捷。进入 test.db 所在目录后,运行:
sqlite3 test.db // 进入 sqlite 交互环境后即可执行 SQL
// 常用操作:
// .tables 查看所有表
// .schema 表名 查看建表语句
// select * from 表名;
// .quit 退出7、平台差异与注意事项
实际使用中,有几处容易踩坑,单列一节说明:
- 管道过滤分平台:adb shell 内部是 Linux 环境,用 grep;在 PC 端对 adb 输出做管道过滤时,Windows 用 findstr,Linux/Mac 用 grep,混用会报命令不存在。
- 涉及重定向 >、占位符 <xxx> 的命令,复制时注意不要漏写或被编辑器吞掉。
- 多设备连接时务必用 -s 指定序列号,否则命令会因目标不唯一而失败。
- adb 连接异常时,先 kill-server 再 start-server,可解决大部分识别不到设备的问题。
- 查看 data/data、wifi 密码等命令需要 root 权限,普通设备可用 run-as 绕过部分限制。
8、总结
adb 是 Android 开发与测试人员使用频率最高的命令行工具,几乎覆盖了设备交互的全部场景。本文将其常用命令归纳为六大类:基础环境、日志、应用、系统信息、文件操作与数据库,每类都给出了最实用的命令与典型用法。
关键要点:
- 用 logcat 配合 -s、grep、优先级快速定位问题日志
- 用 pm / am / dumpsys 完成应用安装、启动、信息查询与性能测量
- 用 push / pull 与 shell 文件命令高效传输与管理设备文件
- 用 dumpsys meminfo、monkey、batterystats 做性能与稳定性分析
对于 Android 工程师而言,熟练掌握 adb 不仅能显著提升排查问题的效率,更是走向高级开发、独立定位疑难 Bug 的必备基本功。建议把本文当作速查手册,在实际开发中边用边记,逐步形成自己的命令工具箱。

