ADB,常被称作测试工程师的“问题定位放大器”。但一提到它,很多测试同学心里会冒出三个疑问:
一是:ADB 是 Android 开发者的日常工具,测试工程师真的用得到吗?
二是:不少测试对 ADB 的认知还停留在“装包工具”,它还有哪些被忽略的价值?
三是:命令收藏了一大堆,真到排查问题时,却不知道该用哪一条。
今天,我们不堆“ADB 命令全攻略”,而是从“为什么测试必须会 ADB”出发,按“场景—命令—输出解读—避坑”的思路,梳理一份测试工程师真正用得上的 ADB 高频命令汇总。目标只有一个:用 20% 的命令,解决 80% 的测试问题。
阅读本文你将收获:
-
• 什么是 ADB? -
• 测试人为什么必须会 ADB; -
• 8 大场景 ADB 命令合集; -
• ADB 高频命令速查表。
一、什么是 ADB?
ADB 全称 Android Debug Bridge,是电脑和 Android 设备之间的调试桥。
它由三部分组成:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
你不需要背架构,但要知道:很多连接问题不是手机坏了,而是某一环断了。所以 adb kill-server、adb start-server、重新插拔、重新授权,往往能解决大半问题。
二、测试人为什么必须会 ADB?
ADB 不只是开发工具,测试日常中大量问题都离不开它:
-
• 新包安装失败,要知道是签名、版本还是测试包问题; -
• 偶现闪退,要自己先抓日志,而不是只说“它崩了”; -
• 复现 Bug,要清数据、切环境、固定网络; -
• 做稳定性,要跑 Monkey、看崩溃和 ANR; -
• 做性能初筛,要采内存、CPU、卡顿数据; -
• 接自动化或 CI,底层也常通过 ADB 操作设备。
ADB 不是开发专属,它是测试工程师的问题定位工具、环境控制工具和效率工具。
三、8 大场景 ADB 命令合集
场景 1:连接设备
场景:设备连不上、多设备切换、无线调试。
无线连接:
Android 11+:
输出解读:
-
• device:正常; -
• unauthorized:手机未授权 USB 调试; -
• offline:设备离线,重新插拔或重启 ADB; -
• no devices:检查 USB 调试、驱动、数据线; -
• 多设备时,必须用 -s <serial>指定设备。
避坑:
-
• 公司网络可能隔离手机和电脑,无线连不上不一定是 ADB 问题; -
• 多设备不指定序列号,命令可能作用到错误设备; -
• 不要在未授权设备上乱操作。
场景 2:装包与包管理
场景:拿到新包,安装、覆盖、清数据、启动、停止。
输出解读:
-
• Success:安装成功; -
• INSTALL_FAILED_UPDATE_INCOMPATIBLE:签名不一致,先卸载旧包; -
• INSTALL_FAILED_VERSION_DOWNGRADE:版本降级,可加-d; -
• INSTALL_FAILED_TEST_ONLY:测试包限制,可加-t; -
• pm clear后应用像首次安装,登录态、缓存、数据库都会清掉。
避坑:
-
• 需要保留现场时,不要随手 pm clear; -
• 覆盖安装不一定能复现首次安装问题; -
• 包名不要靠猜,用 pm list packages -3查。
场景 3:抓日志与崩溃定位
场景:偶现闪退、ANR、开发问“日志呢?”
输出解读:
-
• FATAL EXCEPTION:Java 层崩溃; -
• Caused by:真正原因往往在这行; -
• ANR in:主线程阻塞; -
• ActivityManager:进程、Activity、ANR 相关信息; -
• Low Memory Killer:可能被系统杀进程。
避坑:
-
• 先 adb logcat -c清日志,再复现,否则日志太长; -
• 带时间戳,方便对齐操作步骤; -
• adb logcat *E容易误导,常用写法是adb logcat '*:E'; -
• 日志、截图、录屏可能含隐私,发出去前脱敏; -
• 提 Bug 时附:版本、设备、系统、步骤、日志时间点、关键堆栈。
场景 4:模拟用户操作
场景:批量回归、自动解锁、跳过动画、固定环境。
关闭动画,提升自动化稳定性:
输出解读:
-
• tap基于屏幕坐标; -
• keyevent 3是 Home,4是 Back,26是电源; -
• 坐标依赖分辨率,换设备可能失效。
避坑:
-
• input text对中文和空格支持差,空格可用%s,中文建议 ADBKeyboard; -
• 模拟操作适合辅助,不要完全替代 UI 自动化框架; -
• 改动画、分辨率后记得恢复。
场景 5:Monkey 稳定性冒烟
场景:版本提测前,做基础稳定性冒烟。
输出解读:
-
• -p:指定包名; -
• --throttle 500:事件间隔 500ms; -
• 10000:事件数,不是秒数; -
• 想跑约 1 小时,事件数约 7200;想跑约 2 小时,约 14400。
查关键错误:
避坑:
-
• 不指定包名可能点到系统设置; -
• Monkey 适合冒烟和稳定性初筛,不适合验证业务逻辑; -
• --ignore-crashes、--ignore-timeouts要谨慎使用,否则可能掩盖问题; -
• 跑之前最好清数据、固定网络、关闭通知干扰。
场景 6:性能初筛
场景:页面越用越卡,怀疑内存泄漏或 CPU 异常。
输出解读:
-
• meminfo:看 PSS Total、Heap Size、Activities、Views; -
• top / cpuinfo:看 CPU 占用; -
• gfxinfo:看 Janky frames、90th/95th/99th percentile; -
• battery:看电量、温度、WakeLock。
避坑:
-
• 单次数据没意义,要前后对比; -
• 固定设备、版本、场景再比较; -
• 测试能采数据、描述现象,不一定要定位到代码行。
场景 7:文件、截图、录屏、端口转发
输出解读:
-
• push / pull:电脑与设备互传文件; -
• 截图、录屏:提 Bug 的好证据; -
• forward:电脑端口转发到设备; -
• reverse:设备端口反向转发到电脑,常用于抓包、Mock、本地服务调试。
避坑:
-
• Windows 下截图重定向可能乱码,可先存到设备再 pull; -
• screenrecord默认最长约 180 秒; -
• 截图、录屏注意隐私合规。
场景 8:多设备与脚本化
批量查看设备型号:
简单脚本:
避坑:
-
• 多设备必须指定 -s; -
• CI 中要处理授权、掉线、端口占用; -
• 包名、路径、序列号尽量参数化。
四、ADB 高频速查表
|
|
|
|---|---|
|
|
adb devices -l |
|
|
adb -s <serial> shell |
|
|
adb install -r -t -d app.apk |
|
|
adb uninstall com.xxx |
|
|
adb shell pm clear com.xxx |
|
|
adb shell am start -n com.xxx/.MainActivity |
|
|
adb shell am force-stop com.xxx |
|
|
adb logcat -c |
|
|
adb logcat -v time > logcat.log |
|
|
adb logcat -b crash |
|
|
adb logcat '*:E' |
|
|
adb shell input tap x y |
|
|
adb shell input swipe x1 y1 x2 y2 300 |
|
|
adb shell input text "hello" |
|
|
adb shell monkey -p com.xxx --throttle 500 -v -v -v 10000 |
|
|
adb shell dumpsys meminfo com.xxx |
|
|
adb shell top -n 1 |
|
|
adb shell dumpsys gfxinfo com.xxx |
|
|
adb exec-out screencap -p > screen.png |
|
|
adb shell screenrecord /sdcard/demo.mp4 |
|
|
adb push
adb pull
|
|
|
adb forward
adb reverse
|
记住:不要按“全攻略”学 ADB,要按“场景”用 ADB。用 20% 的高频命令,解决 80% 的测试问题。

