App 测试工程师必看!日常干活离不开的 ADB 命令全套教程

作者:c_chun 发布时间: 2026-06-23 阅读量:2 评论数:0

一、前言:做 Android 测试,谁离得开 ADB?

干安卓手工测试、性能测试、稳定性测试的同学,ADB 绝对是你的隐形外挂。 很多新人刚上手只会点点手机屏幕,装包卸载、抓崩溃日志、复现偶现 bug 全靠手动操作,又慢又容易漏关键信息。但只要把 ADB 玩明白,一条命令搞定一堆重复操作,定位问题效率直接翻倍。

简单说下 ADB 是啥:安卓调试桥,电脑和手机之间的命令行通道,能直接调用手机底层能力,不用点来点去。 不管你是刚入行的测试小白,还是天天回归、压测的老测试,这篇整理的全是工作里天天要用的命令,没有花里胡哨冷门指令,全是实战干货。

二、ADB 入门:先搞定环境,再连上手机

2.1 简单聊聊 ADB 运行逻辑

不用记复杂理论,记住三层结构就行:

  1. 电脑终端:我们输入命令的地方

  2. ADB 后台服务:负责中转指令,默认占用 5037 端口

  3. 手机里的 adbd 进程:接收电脑指令,在手机上执行操作

平时碰到设备离线、连不上手机,十有八九是端口冲突、调试开关没开、数据线不行。

2.2 环境安装与校验

  1. 工具包直接下谷歌官方的 Platform Tools,解压放到固定文件夹

  2. Windows 把文件夹路径加到系统环境变量 Path;Mac、Linux 配置 zsh/bash 环境变量

  3. 打开 cmd / 终端输一句校验:

adb version

能输出版本号,代表配置成功。

2.3 两种连手机方式,日常都能用

方式 1:USB 有线连接(90% 场景都用这个)

  1. 手机设置里找到开发者选项,打开 USB 调试

  2. 数据线插电脑,手机弹出授权框点允许

  3. 查看连接设备:

adb devices

列表里出现设备序列号,状态是 device 就是正常;显示 offline 就是连接异常,重启 adb 服务就行。

方式 2:无线 WiFi 连接,不用插线

适合多台手机同时测、不想被数据线绊住的场景,前提电脑手机连同一个 WiFi:

  1. 先用 USB 连上手机,执行:

adb tcpip 5555
  1. 拔掉数据线,输入手机 IP 连接:

adb connect 192.168.1.105:5555

不想无线用了就断开:

adb disconnect 192.168.1.105:5555

多台手机同时连接,指定单台设备操作

电脑插好几台手机时,直接输命令会报错,必须加-s带上设备序列号:

adb -s 设备序列号 install 安装包.apk

2.4 万能基础修复命令,连不上就敲

  • 重启 adb 服务(解决离线、端口占用神器)

adb kill-server && adb start-server
  • 查看当前所有在线设备

adb devices

三、分场景讲解!工作高频 ADB 命令

3.1 应用包管理:装包、清数据、查包名天天用

这块绝对是测试每天第一条就要用到的指令,版本迭代回归全靠它。

  1. 覆盖安装新版本,保留用户数据,测试迭代必用

adb install -r 测试包.apk

补充参数:

  • -d:允许降级安装,测低版本兼容场景

  • -g:安装自动授予所有权限,不用手动点授权弹窗

  1. 卸载 APP

adb uninstall com.xxx.test

-k可以卸载但保留缓存数据,测缓存残留场景:

adb uninstall -k com.xxx.test
  1. 回归测试前一键清空所有数据(等同于重装) 每次测新功能,怕旧数据干扰结果,直接清数据,不用卸载重装浪费时间:

adb shell pm clear com.xxx.test
  1. 只看手机上自己装的第三方 APP,快速找包名

# Windows
adb shell pm list packages -3 | findstr 关键词
# Mac/Linux
adb shell pm list packages -3 | grep 关键词
  1. 强制杀掉 APP 进程,模拟后台被系统回收

adb shell am force-stop com.xxx.test
  1. 不知道当前页面包名?一键查询前台应用 打开待测页面,直接执行,复制包名备用:

adb shell dumpsys window | grep mCurrentFocus
  1. 直接跳转 APP 内某个页面,跳过登录、引导页 适合单独测试某一个功能页面,不用一步步手动点进去:

adb shell am start -n 包名/页面Activity名称

3.2 log 日志抓取:定位崩溃、报错的核心工具

报 bug 最有力的凭证就是日志,很多新人只会随便抓一堆杂乱日志,其实过滤后精准度高很多。

  1. 实时滚动打印日志,边操作边看报错

adb logcat
  1. 复现 bug 前先清空旧日志,避免无关信息干扰(必做)

adb logcat -c
  1. 把日志保存到本地文件,提交 bug 直接上传

adb logcat -d > bug日志.txt
  1. 只看报错、崩溃级别的日志,过滤冗余打印 日志等级:V 详细、D 调试、I 普通信息、W 警告、E 错误、F 致命崩溃

adb logcat *:E
  1. 只抓取我们待测 APP 的日志,屏蔽系统其他程序日志

adb logcat --pid=$(adb shell pidof com.xxx.test)
  1. APP 无响应 ANR 日志单独导出 页面卡死、弹窗提示应用无响应后,执行这条导出 ANR 堆栈:

adb pull /data/anr/traces.txt ./

小技巧:复现崩溃操作前,先清日志,操作完立刻导出日志,日志里搜FATAL EXCEPTION就能定位崩溃代码。

3.3 性能快速排查:内存、CPU、电量随手查

不用装 PerfDog 这类专业工具,临时快速校验性能数据,直接 adb 搞定。

  1. 查看 APP 内存占用,排查内存暴涨、泄漏 重点看输出里 PSS Total 数值,数值持续上涨不回落大概率内存泄漏:

adb shell dumpsys meminfo com.xxx.test
  1. 实时刷新 CPU 占用,看应用会不会异常吃 CPU

adb shell top -d 1

-d 1代表 1 秒刷新一次,长时间高 CPU 占用要提性能 bug。

  1. 查看手机电池状态、温度、耗电情况 做耗电测试简单核验数据:

adb shell dumpsys battery
  1. 查看应用流量消耗

adb shell dumpsys netstats detail

3.4 模拟手动操作 + Monkey 压测:解放双手

适合重复点击、压力稳定性测试,脚本配合能实现简易自动化。

  1. 模拟点击屏幕坐标 先在手机开发者选项打开指针位置,查看对应坐标填入:

adb shell input tap 500 1200
  1. 模拟上下左右滑动,最后数字是滑动耗时(毫秒)

# 从下往上滑
adb shell input swipe 500 1500 500 500 300
  1. 模拟系统按键(返回、主页、音量)

adb shell input keyevent 4  # 返回键
adb shell input keyevent 3  # home主页
adb shell input keyevent 26 # 电源键亮灭屏
  1. Monkey 稳定性压测,上线前必跑! 随机模拟点击、滑动、跳转,长时间跑抓崩溃 ANR,给大家一条日常通用模板:

adb shell monkey -p com.xxx.test -s 666 --throttle 300 --ignore-crashes --ignore-timeouts -v -v 10000 > monkey日志.txt

简单翻译参数:

  • -p 指定测试包

  • -s 666 固定随机种子,崩溃后可复现操作流程

  • --throttle 300 每次操作间隔 300 毫秒,模拟真人操作速度

  • --ignore-crashes 崩溃不停止,继续跑完

  • 10000 总共执行一万次随机操作

3.5 截图、录屏、文件传输:提交 bug 三件套

提规范 bug,截图 + 录屏 + 日志缺一不可,不用手机微信传到电脑,adb 一步到位。

  1. 截图保存到手机,再拉到本地

adb shell screencap /sdcard/bug截图.png
adb pull /sdcard/bug截图.png ./
  1. 屏幕录制,最长支持 3 分钟,复现偶现 bug 超好用

adb shell screenrecord --time-limit 60 /sdcard/bug录屏.mp4

操作完按 Ctrl+C 停止录制,再把视频拉到电脑:

adb pull /sdcard/bug录屏.mp4 ./
  1. 文件互传 电脑文件传到手机:

adb push 本地文件路径 /sdcard/

手机文件拉到电脑:

adb pull /sdcard/log.txt ./

3.6 设备基础信息查询:兼容测试专用

做多机型兼容测试,批量查看设备型号、安卓版本、屏幕尺寸,不用手动翻设置。

  1. 查看安卓系统版本

adb shell getprop ro.build.version.release
  1. 查看手机型号、厂商

adb shell getprop ro.product.model
adb shell getprop ro.product.brand
  1. 查看屏幕分辨率

adb shell wm size
  1. 一键开关 WiFi,快速测断网、弱网场景

adb shell svc wifi disable  # 关WiFi
adb shell svc wifi enable   # 开WiFi

四、老测试私藏进阶小技巧,大幅提升效率

4.1 常见报错快速解决

  1. 设备显示 offline 执行adb kill-server && adb start-server重启服务;更换数据线、重新开关 USB 调试。

  2. 5037 端口被占用 Windows 用命令找到占用进程结束;Mac/Linux 直接 kill 对应进程,就能正常识别手机。

  3. 无线 adb 连不上 确认电脑手机连同一个 WiFi;关闭电脑防火墙;部分新机型需要单独开启无线调试。

4.2 写成脚本一键执行,不用重复敲命令

经常重复的操作可以打包成 bat/sh 脚本,举两个常用场景:

  1. 一键重置 APP 环境(清数据 + 杀进程)

  2. 一键复现 bug 套件:清空日志→录屏→操作完成导出截图日志

4.3 三个核心 shell 命令吃透就够用

不用深挖底层,日常测试吃透这三类指令:

  • pm:管理 APP 安装卸载、包信息

  • am:启动页面、杀进程、跳转页面

  • dumpsys:查询内存、电量、窗口、网络所有设备信息

五、真实工作实战场景演示,拿来直接用

场景 1:标准 bug 取证流程(新人必学)

很多人提 bug 只截一张图,开发根本找不到问题,完整流程:

  1. 复现 bug 前清空旧日志:adb logcat -c

  2. 开启录屏,操作复现问题

  3. 复现完停止录屏,截取问题页面

  4. 导出完整运行日志

  5. pull 录屏、截图到本地,日志 + 截图 + 视频一起粘贴到 bug 单

场景 2:版本回归,每次测试前重置应用

避免旧缓存、登录数据影响功能验证,两行命令一步到位:

adb shell pm clear com.xxx.test
adb shell am force-stop com.xxx.test

场景 3:版本上线前稳定性压测

下班前跑 Monkey,第二天查看日志里 CRASH、ANR 数量,统计稳定性指标。

场景 4:断网异常场景测试

adb 一键开关 WiFi,快速验证无网络下弹窗、缓存、重连逻辑。

附录:极简速查表(复制就能用)

分类

常用命令

作用说明

基础连接

adb devices

查看在线手机

adb kill-server && adb start-server

修复连接异常

APP 管理

adb install -r xxx.apk

覆盖安装新版本

adb shell pm clear 包名

清空 APP 全部数据

adb shell am force-stop 包名

强制关闭应用

日志抓取

adb logcat -c

清空历史日志

adb logcat -d > log.txt

导出日志保存本地

性能测试

adb shell dumpsys meminfo 包名

查看内存占用

adb shell top -d 1

实时查看 CPU

压测

adb shell monkey -p 包名 -v 10000

基础压力测试

取证工具

adb shell screencap /sdcard/a.png

截图

adb shell screenrecord /sdcard/a.mp4

录屏

设备信息

adb shell wm size

获取屏幕分辨率

adb shell dumpsys window | grep mCurrentFocus

获取当前页面包名

评论