一、前言:做 Android 测试,谁离得开 ADB?
干安卓手工测试、性能测试、稳定性测试的同学,ADB 绝对是你的隐形外挂。 很多新人刚上手只会点点手机屏幕,装包卸载、抓崩溃日志、复现偶现 bug 全靠手动操作,又慢又容易漏关键信息。但只要把 ADB 玩明白,一条命令搞定一堆重复操作,定位问题效率直接翻倍。
简单说下 ADB 是啥:安卓调试桥,电脑和手机之间的命令行通道,能直接调用手机底层能力,不用点来点去。 不管你是刚入行的测试小白,还是天天回归、压测的老测试,这篇整理的全是工作里天天要用的命令,没有花里胡哨冷门指令,全是实战干货。
二、ADB 入门:先搞定环境,再连上手机
2.1 简单聊聊 ADB 运行逻辑
不用记复杂理论,记住三层结构就行:
电脑终端:我们输入命令的地方
ADB 后台服务:负责中转指令,默认占用 5037 端口
手机里的 adbd 进程:接收电脑指令,在手机上执行操作
平时碰到设备离线、连不上手机,十有八九是端口冲突、调试开关没开、数据线不行。
2.2 环境安装与校验
工具包直接下谷歌官方的 Platform Tools,解压放到固定文件夹
Windows 把文件夹路径加到系统环境变量 Path;Mac、Linux 配置 zsh/bash 环境变量
打开 cmd / 终端输一句校验:
adb version能输出版本号,代表配置成功。
2.3 两种连手机方式,日常都能用
方式 1:USB 有线连接(90% 场景都用这个)
手机设置里找到开发者选项,打开 USB 调试
数据线插电脑,手机弹出授权框点允许
查看连接设备:
adb devices列表里出现设备序列号,状态是 device 就是正常;显示 offline 就是连接异常,重启 adb 服务就行。
方式 2:无线 WiFi 连接,不用插线
适合多台手机同时测、不想被数据线绊住的场景,前提电脑手机连同一个 WiFi:
先用 USB 连上手机,执行:
adb tcpip 5555拔掉数据线,输入手机 IP 连接:
adb connect 192.168.1.105:5555不想无线用了就断开:
adb disconnect 192.168.1.105:5555多台手机同时连接,指定单台设备操作
电脑插好几台手机时,直接输命令会报错,必须加-s带上设备序列号:
adb -s 设备序列号 install 安装包.apk2.4 万能基础修复命令,连不上就敲
重启 adb 服务(解决离线、端口占用神器)
adb kill-server && adb start-server查看当前所有在线设备
adb devices三、分场景讲解!工作高频 ADB 命令
3.1 应用包管理:装包、清数据、查包名天天用
这块绝对是测试每天第一条就要用到的指令,版本迭代回归全靠它。
覆盖安装新版本,保留用户数据,测试迭代必用
adb install -r 测试包.apk补充参数:
-d:允许降级安装,测低版本兼容场景-g:安装自动授予所有权限,不用手动点授权弹窗
卸载 APP
adb uninstall com.xxx.test加-k可以卸载但保留缓存数据,测缓存残留场景:
adb uninstall -k com.xxx.test回归测试前一键清空所有数据(等同于重装) 每次测新功能,怕旧数据干扰结果,直接清数据,不用卸载重装浪费时间:
adb shell pm clear com.xxx.test只看手机上自己装的第三方 APP,快速找包名
# Windows
adb shell pm list packages -3 | findstr 关键词
# Mac/Linux
adb shell pm list packages -3 | grep 关键词强制杀掉 APP 进程,模拟后台被系统回收
adb shell am force-stop com.xxx.test不知道当前页面包名?一键查询前台应用 打开待测页面,直接执行,复制包名备用:
adb shell dumpsys window | grep mCurrentFocus直接跳转 APP 内某个页面,跳过登录、引导页 适合单独测试某一个功能页面,不用一步步手动点进去:
adb shell am start -n 包名/页面Activity名称3.2 log 日志抓取:定位崩溃、报错的核心工具
报 bug 最有力的凭证就是日志,很多新人只会随便抓一堆杂乱日志,其实过滤后精准度高很多。
实时滚动打印日志,边操作边看报错
adb logcat复现 bug 前先清空旧日志,避免无关信息干扰(必做)
adb logcat -c把日志保存到本地文件,提交 bug 直接上传
adb logcat -d > bug日志.txt只看报错、崩溃级别的日志,过滤冗余打印 日志等级:V 详细、D 调试、I 普通信息、W 警告、E 错误、F 致命崩溃
adb logcat *:E只抓取我们待测 APP 的日志,屏蔽系统其他程序日志
adb logcat --pid=$(adb shell pidof com.xxx.test)APP 无响应 ANR 日志单独导出 页面卡死、弹窗提示应用无响应后,执行这条导出 ANR 堆栈:
adb pull /data/anr/traces.txt ./小技巧:复现崩溃操作前,先清日志,操作完立刻导出日志,日志里搜
FATAL EXCEPTION就能定位崩溃代码。
3.3 性能快速排查:内存、CPU、电量随手查
不用装 PerfDog 这类专业工具,临时快速校验性能数据,直接 adb 搞定。
查看 APP 内存占用,排查内存暴涨、泄漏 重点看输出里 PSS Total 数值,数值持续上涨不回落大概率内存泄漏:
adb shell dumpsys meminfo com.xxx.test实时刷新 CPU 占用,看应用会不会异常吃 CPU
adb shell top -d 1-d 1代表 1 秒刷新一次,长时间高 CPU 占用要提性能 bug。
查看手机电池状态、温度、耗电情况 做耗电测试简单核验数据:
adb shell dumpsys battery查看应用流量消耗
adb shell dumpsys netstats detail3.4 模拟手动操作 + Monkey 压测:解放双手
适合重复点击、压力稳定性测试,脚本配合能实现简易自动化。
模拟点击屏幕坐标 先在手机开发者选项打开指针位置,查看对应坐标填入:
adb shell input tap 500 1200模拟上下左右滑动,最后数字是滑动耗时(毫秒)
# 从下往上滑
adb shell input swipe 500 1500 500 500 300模拟系统按键(返回、主页、音量)
adb shell input keyevent 4 # 返回键
adb shell input keyevent 3 # home主页
adb shell input keyevent 26 # 电源键亮灭屏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 一步到位。
截图保存到手机,再拉到本地
adb shell screencap /sdcard/bug截图.png
adb pull /sdcard/bug截图.png ./屏幕录制,最长支持 3 分钟,复现偶现 bug 超好用
adb shell screenrecord --time-limit 60 /sdcard/bug录屏.mp4操作完按 Ctrl+C 停止录制,再把视频拉到电脑:
adb pull /sdcard/bug录屏.mp4 ./文件互传 电脑文件传到手机:
adb push 本地文件路径 /sdcard/手机文件拉到电脑:
adb pull /sdcard/log.txt ./3.6 设备基础信息查询:兼容测试专用
做多机型兼容测试,批量查看设备型号、安卓版本、屏幕尺寸,不用手动翻设置。
查看安卓系统版本
adb shell getprop ro.build.version.release查看手机型号、厂商
adb shell getprop ro.product.model
adb shell getprop ro.product.brand查看屏幕分辨率
adb shell wm size一键开关 WiFi,快速测断网、弱网场景
adb shell svc wifi disable # 关WiFi
adb shell svc wifi enable # 开WiFi四、老测试私藏进阶小技巧,大幅提升效率
4.1 常见报错快速解决
设备显示 offline 执行
adb kill-server && adb start-server重启服务;更换数据线、重新开关 USB 调试。5037 端口被占用 Windows 用命令找到占用进程结束;Mac/Linux 直接 kill 对应进程,就能正常识别手机。
无线 adb 连不上 确认电脑手机连同一个 WiFi;关闭电脑防火墙;部分新机型需要单独开启无线调试。
4.2 写成脚本一键执行,不用重复敲命令
经常重复的操作可以打包成 bat/sh 脚本,举两个常用场景:
一键重置 APP 环境(清数据 + 杀进程)
一键复现 bug 套件:清空日志→录屏→操作完成导出截图日志
4.3 三个核心 shell 命令吃透就够用
不用深挖底层,日常测试吃透这三类指令:
pm:管理 APP 安装卸载、包信息
am:启动页面、杀进程、跳转页面
dumpsys:查询内存、电量、窗口、网络所有设备信息
五、真实工作实战场景演示,拿来直接用
场景 1:标准 bug 取证流程(新人必学)
很多人提 bug 只截一张图,开发根本找不到问题,完整流程:
复现 bug 前清空旧日志:
adb logcat -c开启录屏,操作复现问题
复现完停止录屏,截取问题页面
导出完整运行日志
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,快速验证无网络下弹窗、缓存、重连逻辑。