当前位置: 首页 > news >正文

移动端——ADB命令

ADB

  • 一、ADB 核心介绍
    • 1.1 什么是 ADB
    • 1.2 ADB 的工作原理
    • 1.3 ADB 的核心用途(测试场景重点)
    • 1.4 前置准备(必看)
  • 二、测试工程师高频 ADB 命令速查表
    • 类别一:设备连接与管理
    • 类别二:APP 安装与卸载
    • 类别三:APP 信息查询
    • 类别四:日志抓取(崩溃/异常排查神器)
    • 类别五:文件传输(电脑 ↔ 设备)
    • 类别六:截图与录屏(测试取证必用)
    • 类别七:进程与性能监控(性能测试基础)
    • 类别八:Monkey 压力测试(稳定性测试)
    • 类别九:系统控制与自动化测试联动
  • 三、常见问题排查(测试中高频遇到)
    • 3.1 问题1:adb devices 无法识别设备
    • 3.2 问题2:执行adb命令提示“device not found”
    • 3.3 问题3:安装APP提示“INSTALL_FAILED_INSUFFICIENT_STORAGE”
    • 3.4 问题4:logcat 无法抓取到目标APP日志

一、ADB 核心介绍

1.1 什么是 ADB

ADB 全称 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 的功能覆盖测试全流程,尤其是自动化测试、问题排查、批量操作场景,核心用途如下:

  1. 设备管理:查看连接的设备、连接/断开设备、多设备切换操作,解决测试中“多设备并行测试”的需求。
  2. APP 操作:安装、卸载、覆盖安装APP,清空APP缓存/数据,启动/停止APP,跳过首页直接打开指定页面(方便测试特定功能模块)。
  3. 问题排查:实时抓取APP日志(Logcat),定位崩溃、无响应、异常弹窗的原因;查看APP进程、CPU/内存占用,分析性能问题。
  4. 文件传输:在电脑和设备之间传输文件(如APK安装包、测试数据、截图/录屏文件),无需手动操作设备。
  5. 自动化测试联动:Appium、UIAutomator 等自动化测试框架,底层均依赖 ADB 实现与设备的通信,完成自动化脚本的执行(如点击、输入、滑动等操作)。
  6. 压力测试:通过 monkey 命令实现APP的随机操作压力测试,快速检测APP的稳定性(如是否崩溃、卡顿)。
  7. 系统控制:重启设备、进入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 disconnect
adb -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.mm
adb shell pm clear 包名清空指定APP的缓存和数据(重置APP,测试首次启动、清除缓存后场景)执行后,APP会恢复到首次安装状态,登录信息、缓存文件会被清空
adb shell dumpsys package 包名查看APP的详细信息(安装时间、权限、组件等)输出内容较多,可配合过滤命令查看指定信息,如:adb shell dumpsys package 包名 grep version(查看APP版本)

类别四:日志抓取(崩溃/异常排查神器)

ADB 命令核心用途注意事项
adb logcat实时输出设备的所有系统日志和APP日志(默认输出到终端)日志会持续滚动,按 Ctrl+C 停止输出
adb logcat > log.txt将实时日志保存到电脑当前目录的 log.txt 文件中(后续分析日志用)适合长时间抓取日志,如测试APP稳定性时,抓取几小时日志后分析
adb logcat *:E只输出错误级别(Error)的日志(快速定位崩溃、异常问题)日志级别:V(Verbose,详细)、D(Debug,调试)、I(Info,信息)、W(Warning,警告)、E(Error,错误)
adb logcat 管道符 grep 包名只输出指定APP的日志(过滤其他APP和系统日志,精准排查目标APP问题)测试时最常用,可快速定位目标APP的崩溃原因
adb logcat 管道符 grep 关键词过滤包含指定关键词的日志(如报错信息、功能名称)示例:抓取包含“登录失败”的日志,命令:adb logcat
adb 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/(Mac)
adb 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.png
adb 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分钟)按 Ctrl+C 停止录制,录制时间超过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)进程ID(PID)用于后续杀死进程、查看进程占用等操作
adb shell kill 进程ID强制杀死指定进程(APP无响应时,快速结束进程)进程ID通过adb shell ps 管道符 grep 包名 获取,也可使用 adb shell am force-stop 包名 直接杀死APP进程
adb shell top实时查看设备的CPU、内存占用情况(类似电脑的任务管理器)按 Ctrl+C 停止,按 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 window
adb shell am force-stop 包名强制停止指定APP(关闭APP进程,测试APP重新启动场景)比 adb shell kill 进程ID 更便捷,无需查询进程ID
adb shell dumpsys window 管道符 grep mCurrentFocus查看当前设备正在显示的页面Activity(自动化测试定位页面、跳转页面时常用)输出结果中,“包名/Activity名”即为当前页面的完整标识

三、常见问题排查(测试中高频遇到)

3.1 问题1:adb 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 问题4:logcat 无法抓取到目标APP日志

解决方案:

  • 确认APP正在运行:执行 adb shell ps | grep 包名,查看APP进程是否存在。
  • 检查包名是否正确:确保过滤的包名与APP实际包名一致(可通过 adb shell pm list packages -3 重新查询)。
  • 清空旧日志:执行 adb logcat -c,再重新抓取日志。
http://www.jsqmd.com/news/645211/

相关文章:

  • SCI论文从投稿到发表的完整流程解析
  • 别再傻傻分不清!用STM32CubeMX快速上手有源/无源蜂鸣器(附完整工程)
  • 怎么下载venv,安装python环境
  • COMSOL数据集实战:从基础操作到高级可视化技巧
  • UDS诊断实战:0x28服务(CommunicationControl)在车载ECU刷写中的关键作用与配置详解
  • 用VoiceFixer修复受损音频:AI音频修复的完整指南
  • BilibiliDown:一站式B站视频下载解决方案,轻松保存你的最爱内容
  • 2026年好用的收银系统排名揭晓,看看哪些系统榜上有名! - 企业推荐官【官方】
  • Word+MathType公式编号全攻略:从插入到引用,一篇搞定所有疑难杂症
  • Jellyfin Android TV客户端版本兼容性终极指南:避免连接失败的最佳实践
  • 5分钟掌握抖音无水印下载:免费高效的视频批量获取方案
  • 2026年在线客服平台,预算低价格透明免费按需付费年费便宜 - 品牌2026
  • 高效网盘直链解析工具:本地化智能下载解决方案
  • 流量清洗的作用是什么?
  • 2026年性能稳定智能客服,智能问答精准定制开发 - 品牌2026
  • 从原理到实践:Halcon矩形角点检测的8种算法深度解析(2024最新版)
  • 2026推荐:企业级智能体落地难?试试无安全风险的OpenClaw替代工具 - 品牌2025
  • Windows下10分钟搞定Deeplearning4j环境配置(含阿里云镜像加速)
  • FPGA项目复盘:如何为ADI ADC定制AXI Quad SPI IP核的时序适配层(含源码分析)
  • DDrawCompat终极指南:让经典游戏在现代Windows系统完美运行
  • 从输入法到编程语言:手把手教你用仓颉语言(Cangjie)实现数字统计小工具
  • Open-CD遥感图像变化检测:从零到精通的完整实践指南
  • 企业运维效率低?2026OpenClaw安全替代工具推荐来解忧 - 品牌2025
  • BatteryML架构设计与实战应用:企业级电池健康管理模型库深度解析
  • ChanlunX:让缠论分析像看图说话一样简单
  • 【ROS2 + MoveIT】从零上手系列:GUI界面下的机器人运动规划实战
  • 天虹购物卡回收全攻略:线上回收流程与使用场景全面解读 - 团团收购物卡回收
  • 海思3516DV300通过mipi_tx驱动st7701s屏幕的配置与调试实战
  • 如何高效使用 Mermaid CLI:专业图表生成与自动化部署指南
  • Win11移动硬盘安装全攻略:不用工具也能搞定(附常见问题解决方案)