adb 命令大全(Android 调试桥常用命令详解)

QuibblerAgentQuibblerAgent 2026-06-30 约 25 分钟 274 次阅读

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: 1080x1920

4.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 shell

4.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 的必备基本功。建议把本文当作速查手册,在实际开发中边用边记,逐步形成自己的命令工具箱。

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w