移动端——ADB命令

张开发
2026/4/15 14:36:34 15 分钟阅读

分享文章

移动端——ADB命令
ADB一、ADB 核心介绍1.1 什么是 ADB1.2 ADB 的工作原理1.3 ADB 的核心用途测试场景重点1.4 前置准备必看二、测试工程师高频 ADB 命令速查表类别一设备连接与管理类别二APP 安装与卸载类别三APP 信息查询类别四日志抓取崩溃/异常排查神器类别五文件传输电脑 ↔ 设备类别六截图与录屏测试取证必用类别七进程与性能监控性能测试基础类别八Monkey 压力测试稳定性测试类别九系统控制与自动化测试联动三、常见问题排查测试中高频遇到3.1 问题1adb devices 无法识别设备3.2 问题2执行adb命令提示“device not found”3.3 问题3安装APP提示“INSTALL_FAILED_INSUFFICIENT_STORAGE”3.4 问题4logcat 无法抓取到目标APP日志一、ADB 核心介绍1.1 什么是 ADBADB 全称 Android Debug Bridge安卓调试桥是 Google 官方推出的、用于实现「电脑与安卓设备真机/模拟器」之间通信、调试、控制的命令行工具属于安卓开发/测试的核心基础工具。简单来说ADB 就像一座“桥梁”连接电脑和安卓设备让我们可以通过电脑输入命令直接操控手机/模拟器完成手动操作无法高效完成的任务如批量安装APP、实时抓日志、自动化测试联动等。核心特点跨平台支持 Windows、Mac、Linux、操作便捷、功能强大是测试工程师尤其是APP测试、嵌入式安卓设备测试日常工作中不可或缺的工具。1.2 ADB 的工作原理ADB 采用「客户端-服务端-设备端」三层架构确保通信稳定且高效具体如下客户端Client安装在电脑上就是我们输入 ADB 命令的终端如 CMD、Terminal负责发送操作指令如安装APP、抓日志。服务端Server同样运行在电脑上是 ADB 的“中转站”负责接收客户端的指令转发给设备端同时将设备端的执行结果反馈给客户端。默认占用 5037 端口启动 ADB 时会自动启动服务端。设备端Daemon简称 adbd运行在安卓设备真机/模拟器上的后台进程负责接收服务端的指令执行具体操作如安装APK、截图并将结果回传。补充只有设备端开启“开发者模式”并打开“USB调试”电脑才能通过 ADB 识别并控制设备真机需用USB线连接或开启无线调试模拟器默认已开启调试。1.3 ADB 的核心用途测试场景重点ADB 的功能覆盖测试全流程尤其是自动化测试、问题排查、批量操作场景核心用途如下设备管理查看连接的设备、连接/断开设备、多设备切换操作解决测试中“多设备并行测试”的需求。APP 操作安装、卸载、覆盖安装APP清空APP缓存/数据启动/停止APP跳过首页直接打开指定页面方便测试特定功能模块。问题排查实时抓取APP日志Logcat定位崩溃、无响应、异常弹窗的原因查看APP进程、CPU/内存占用分析性能问题。文件传输在电脑和设备之间传输文件如APK安装包、测试数据、截图/录屏文件无需手动操作设备。自动化测试联动Appium、UIAutomator 等自动化测试框架底层均依赖 ADB 实现与设备的通信完成自动化脚本的执行如点击、输入、滑动等操作。压力测试通过 monkey 命令实现APP的随机操作压力测试快速检测APP的稳定性如是否崩溃、卡顿。系统控制重启设备、进入Recovery/Bootloader模式方便测试设备重启后的APP状态、系统兼容性等场景。1.4 前置准备必看使用 ADB 命令前需完成以下准备避免出现“设备识别失败”“命令无法执行”等问题安装 ADB 工具电脑需安装 Android SDK或精简版 ADB 工具包安装后配置环境变量确保终端输入adb 能正常显示命令帮助。设备调试开启真机打开“设置”→ 找到“关于手机”→ 连续点击“版本号”7次开启“开发者模式”返回设置进入“系统和更新”→“开发者选项”开启“USB调试”无线调试需额外开启“无线调试”开关。模拟器默认已开启开发者模式和USB调试无需手动操作启动模拟器后即可通过 ADB 识别。设备连接USB连接用USB线将真机与电脑连接首次连接需在手机上点击“允许USB调试”勾选“始终允许”。无线连接确保电脑和设备在同一局域网先通过USB连接设备执行 adb tcpip 5555再断开USB执行 adb connect 设备IP:5555 即可连接。注意若执行adb devices无法识别设备需检查USB线是否支持数据传输部分充电线仅支持充电、环境变量是否配置正确、设备调试开关是否开启。二、测试工程师高频 ADB 命令速查表以下命令覆盖测试日常 90% 场景按功能分类整理标注核心用途和注意事项适合新手直接背诵、实操。类别一设备连接与管理ADB 命令核心用途注意事项adb devices查看当前已连接的所有安卓设备真机/模拟器显示设备号和连接状态状态为“device”表示连接正常“offline”表示连接异常“unauthorized”表示未允许USB调试adb connect 192.168.1.100连接同一局域网内的设备模拟器/真机IP为设备的局域网IP真机需开启无线调试模拟器IP可在模拟器设置中查看通常为127.0.0.1:端口号adb connect 127.0.0.1:62001连接夜神、逍遥等模拟器默认端口夜神62001、逍遥21503不同模拟器端口不同可在模拟器“设置-开发者选项”中查看adb disconnect 192.168.1.100断开指定IP设备的连接不指定IP则断开所有已连接设备命令adb disconnectadb -s 设备号 shell多设备连接时指定某一台设备执行后续命令设备号通过 adb devices 获取示例adb -s 123456 shell后续命令仅作用于该设备adb start-server手动启动ADB服务端默认自动启动服务异常时使用若提示“端口被占用”可先执行 adb kill-server 关闭服务再重新启动adb kill-server关闭ADB服务端解决服务卡顿、设备识别异常等问题关闭后再次执行ADB命令会自动重启服务类别二APP 安装与卸载ADB 命令核心用途注意事项adb install demo.apk将电脑当前目录下的 demo.apk 安装到设备中若APP已安装会提示“失败”需用覆盖安装命令adb install -r demo.apk覆盖安装APP保留APP原有缓存和数据测试版本更新时常用适合测试“版本升级是否保留用户数据”场景adb install -t demo.apk允许安装测试包如未签名、debug版本的APK普通安装命令无法安装测试包时添加 -t 参数adb install -s demo.apk将APP安装到设备的SD卡中部分设备支持适合设备内存不足的场景现在多数设备默认安装到内部存储adb uninstall 包名卸载设备中的指定APP需输入APP包名而非APP名称示例卸载微信命令adb uninstall com.tencent.mm包名需通过命令查询adb uninstall -k 包名卸载APP但保留APP的缓存和数据测试卸载后重新安装的数据恢复场景重新安装后APP会保留之前的登录状态、设置等数据类别三APP 信息查询ADB 命令核心用途注意事adb shell pm list packages查看设备中安装的所有APP包名系统APP第三方APP输出结果较多建议配合过滤命令使用adb shell pm list packages -3只查看设备中安装的第三方APP包名测试中最常用过滤掉系统自带APP快速找到需要测试的APP包名adb shell pm list packagesgrep 关键词过滤指定APP的包名关键词可填APP名称、包名片段adb shell pm path 包名查看指定APP的安装路径测试APP安装位置、提取APK时常用示例查看微信安装路径命令adb shell pm path com.tencent.mmadb shell pm clear 包名清空指定APP的缓存和数据重置APP测试首次启动、清除缓存后场景执行后APP会恢复到首次安装状态登录信息、缓存文件会被清空adb shell dumpsys package 包名查看APP的详细信息安装时间、权限、组件等输出内容较多可配合过滤命令查看指定信息如adb shell dumpsys package 包名 grep version查看APP版本类别四日志抓取崩溃/异常排查神器ADB 命令核心用途注意事项adb logcat实时输出设备的所有系统日志和APP日志默认输出到终端日志会持续滚动按 CtrlC 停止输出adb logcat log.txt将实时日志保存到电脑当前目录的 log.txt 文件中后续分析日志用适合长时间抓取日志如测试APP稳定性时抓取几小时日志后分析adb logcat *:E只输出错误级别Error的日志快速定位崩溃、异常问题日志级别VVerbose详细、DDebug调试、IInfo信息、WWarning警告、EError错误adb logcat 管道符 grep 包名只输出指定APP的日志过滤其他APP和系统日志精准排查目标APP问题测试时最常用可快速定位目标APP的崩溃原因adb logcat 管道符 grep 关键词过滤包含指定关键词的日志如报错信息、功能名称示例抓取包含“登录失败”的日志命令adb logcatadb logcat -c清空设备中的旧日志避免旧日志干扰抓取新日志前必做建议每次测试新场景前先执行此命令清空日志adb logcat -v time log.txt输出日志时显示每条日志的时间戳方便定位某一时刻的异常排查“特定时间点APP崩溃”场景时非常实用类别五文件传输电脑 ↔ 设备ADB 命令核心用途注意事项adb push 电脑文件路径 /sdcard/将电脑上的文件推送到设备的 SD 卡根目录示例推送电脑 D 盘的 test.txt 文件命令adb push D:\test.txt /sdcard/adb push 电脑文件路径 /sdcard/文件夹/将电脑文件推送到设备 SD 卡的指定文件夹需确保文件夹存在若文件夹不存在可先执行 adb shell mkdir /sdcard/文件夹 创建文件夹adb pull /sdcard/设备文件路径 电脑路径将设备中的文件拉取到电脑的指定路径示例将设备 SD 卡的 screen.png 拉到电脑桌面命令adb pull /sdcard/screen.png ~/Desktop/Macadb pull /sdcard/设备文件路径 .将设备文件拉取到电脑当前终端所在的目录快捷用法“.” 表示当前目录无需手动输入完整电脑路径adb shell ls /sdcard/查看设备 SD 卡根目录下的所有文件和文件夹类似 Linux 的 ls 命令可配合 cd 命令切换目录如 adb shell cd /sdcard/Download类别六截图与录屏测试取证必用ADB 命令核心用途注意事项adb shell screencap /sdcard/screen.png将设备当前屏幕截图保存到 SD 卡根目录命名为 screen.png可自定义文件名和路径如adb shell screencap /sdcard/test/screen1.pngadb shell screencap -p /sdcard/screen.png截图并保存为 PNG 格式部分设备默认格式需指定若截图后无法打开添加 -p 参数指定格式adb shell screencap /sdcard/screen.png adb pull /sdcard/screen.png .截图后自动将图片拉取到电脑当前目录一步完成高效取证测试时发现bug可快速截图并保存到电脑方便后续提交bug报告adb shell screenrecord /sdcard/record.mp4录制设备屏幕保存到 SD 卡根目录命名为 record.mp4默认3分钟按 CtrlC 停止录制录制时间超过3分钟需手动停止adb shell screenrecord --time-limit 60 /sdcard/record.mp4指定录制时长单位秒此处为60秒到时间自动停止适合测试特定时长的场景如APP启动流程、功能操作流程类别七进程与性能监控性能测试基础ADB 命令核心用途注意事项adb shell ps查看设备中所有正在运行的进程进程ID、进程名、所属用户等输出内容较多建议配合过滤命令查看目标APP进程adb shell ps 管道符 grep 包名查看指定APP的运行进程判断APP是否在运行、获取进程ID进程IDPID用于后续杀死进程、查看进程占用等操作adb shell kill 进程ID强制杀死指定进程APP无响应时快速结束进程进程ID通过adb shell ps 管道符 grep 包名 获取也可使用 adb shell am force-stop 包名 直接杀死APP进程adb shell top实时查看设备的CPU、内存占用情况类似电脑的任务管理器按 CtrlC 停止按 m 按内存占用排序按 c 显示完整进程名adb shell top -n 1 管道符 grep 包名查看指定APP的CPU和内存占用单次查询不实时滚动适合快速查看APP的当前性能状态-n 1 表示只查询一次adb shell dumpsys meminfo 包名查看指定APP的详细内存占用信息总内存、堆内存、缓存等用于分析APP内存泄漏、内存占用过高问题重点关注“Total PSS”数值类别八Monkey 压力测试稳定性测试ADB 命令核心用途注意事项adb shell monkey -p 包名 -v 10000对指定APP进行随机操作压力测试执行10000次随机操作点击、滑动、输入等-v 表示输出详细日志10000 为操作次数可根据需求调整adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts -v 10000压力测试时忽略APP崩溃和超时异常继续执行测试完整测试稳定性适合长时间稳定性测试避免因单次崩溃导致测试中断adb shell monkey -p 包名 --throttle 500 -v 10000设置每次随机操作的间隔时间单位毫秒此处为500毫秒降低操作频率默认无间隔操作过快可能导致APP无响应建议设置500-1000毫秒间隔adb shell monkey -p 包名 -s 12345 -v 10000设置随机种子12345确保每次测试的操作序列一致复现稳定性问题若某次测试出现崩溃使用相同种子可复现相同的操作序列定位问题原因类别九系统控制与自动化测试联动ADB 命令核心用途注意事项adb reboot重启安卓设备测试设备重启后APP的状态、开机自启等场景重启过程中ADB连接会断开重启完成后需重新连接adb reboot recovery重启设备并进入Recovery模式用于设备刷机、清除数据等测试中较少用进入Recovery模式后需手动操作设备退出谨慎使用adb reboot bootloader重启设备并进入Bootloader模式用于设备解锁、烧录等嵌入式测试可能用到非必要不使用可能导致设备无法正常启动adb shell am start -n 包名/启动Activity启动指定APP并直接打开指定的Activity跳过首页测试特定页面Activity名称需通过 adb shell dumpsys windowadb shell am force-stop 包名强制停止指定APP关闭APP进程测试APP重新启动场景比 adb shell kill 进程ID 更便捷无需查询进程IDadb shell dumpsys window 管道符 grep mCurrentFocus查看当前设备正在显示的页面Activity自动化测试定位页面、跳转页面时常用输出结果中“包名/Activity名”即为当前页面的完整标识三、常见问题排查测试中高频遇到3.1 问题1adb devices 无法识别设备解决方案检查USB线确保USB线支持数据传输更换一根USB线重试。检查调试开关确认设备“USB调试”已开启真机需重新插拔USB勾选“允许USB调试”。重启ADB服务执行 adb kill-server再执行 adb start-server。检查环境变量确认ADB工具已配置到系统环境变量终端输入 adb --version 验证是否安装成功。3.2 问题2执行adb命令提示“device not found”解决方案确认设备已连接执行 adb devices 查看设备状态若未显示设备重新连接设备。多设备连接时未指定设备执行 adb -s 设备号 命令指定设备执行操作。无线连接异常重新执行 adb connect 设备IP确保电脑和设备在同一局域网。3.3 问题3安装APP提示“INSTALL_FAILED_INSUFFICIENT_STORAGE”解决方案设备内存不足删除设备中无用的APP或文件释放内存后重新安装。3.4 问题4logcat 无法抓取到目标APP日志解决方案确认APP正在运行执行 adb shell ps | grep 包名查看APP进程是否存在。检查包名是否正确确保过滤的包名与APP实际包名一致可通过 adb shell pm list packages -3 重新查询。清空旧日志执行 adb logcat -c再重新抓取日志。

更多文章