Android ADB 常用指令全解析
ADB(Android Debug Bridge)是 Android 开发和测试不可或缺的调试工具,它建立了电脑与 Android 设备之间的通信桥梁,通过命令行指令可实现对设备的全方位控制。掌握 ADB 指令能大幅提升开发效率,解决各类调试难题。本文系统整理了 ADB 的常用指令,按功能分类详解,包含使用场景与实战示例,助你快速成为 ADB 高手。
一、ADB 基础与环境配置
什么是 ADB?
ADB 是 Android SDK 中的一个命令行工具,全称为 Android Debug Bridge,本质是一个客户端 - 服务器程序,包含三个核心组件:
- 客户端:运行在开发机上,负责接收用户输入的指令(如命令行输入adb命令)
- 守护进程(daemon):以adbd进程形式运行在 Android 设备后台,负责执行客户端发送的指令
- 服务器:运行在开发机后台的adb进程,负责管理客户端与设备守护进程的通信,协调多个客户端与设备的连接
ADB 最初由 Google 在 Android 1.0 时代推出,设计初衷是解决开发过程中 "设备 - 开发机" 交互的痛点。它基于 TCP/IP 协议实现通信,默认通过 USB 接口传输数据,也支持无线连接模式。经过十余年演进,ADB 已从简单的调试工具发展为集设备管理、应用调试、系统控制于一体的全能工具,成为 Android 开发生态中不可或缺的基础设施。
其核心价值体现在:
- 打破应用沙箱限制,允许开发机直接操作设备底层资源
- 提供统一的命令接口,兼容从手机到智能手表的全系列 Android 设备
- 支持跨平台操作(Windows/macOS/Linux),保障开发环境一致性
ADB 的工作原理
ADB 的通信流程遵循典型的 C/S 架构:
1.当用户在终端输入adb命令时,客户端会向本地 ADB 服务器发送请求(默认端口 5037)
2.服务器检查是否已与目标设备建立连接,若未连接则尝试通过 USB 或网络发现设备
3.服务器将指令转发至设备上的adbd守护进程
4.守护进程执行指令并将结果通过服务器返回给客户端
5.客户端将结果显示在终端界面
这种分层架构的优势在于:
- 支持多客户端同时连接(如同时打开多个命令行窗口操作设备)
- 服务器自动管理设备连接状态,无需用户手动维护通信链路
- 指令执行与结果返回的异步处理,提升复杂操作的效率
环境配置步骤
1.安装 Android SDK Platform Tools:
- 官网下载对应系统的 Platform Tools(包含 ADB 工具)
- 解压后将路径添加到系统环境变量(Windows 的 PATH 或 macOS/Linux 的.bashrc/.zshrc)
- 验证安装:打开终端输入adb version,显示版本信息即表示安装成功
2.设备调试模式配置:
- 开启设备 "开发者选项":连续点击系统版本号 7 次(不同品牌路径可能不同)
- 启用 "USB 调试" 选项(Android 11 + 需额外开启 "无线调试" 权限)
- 首次连接时,设备会弹出 "USB 调试授权" 窗口,勾选 "始终允许此计算机" 以避免重复授权
3.连接设备:
- 有线连接:用 USB 线连接设备与电脑,通过adb devices确认连接状态
- 无线连接:需先通过 USB 配置(见后文详解),适合需要摆脱线缆束缚的场景
4.确认连接状态:
adb devices
正常情况下会显示设备序列号及状态:
- device:连接正常,可执行指令
- offline:设备已连接但未响应(通常需重启 ADB 或设备)
- unauthorized:未授权调试权限(需在设备上确认授权)
ADB 的安全机制
为保护用户隐私与设备安全,ADB 采用多层次安全措施:
1.调试授权机制:首次连接新设备时必须通过设备端确认,防止未授权计算机访问设备
2.权限分级:普通 ADB 指令受限于设备用户权限,敏感操作(如修改系统文件)需 root 权限
3.无线调试加密:Android 11 + 的无线调试采用配对码验证,避免局域网内的恶意连接
4.沙箱隔离:非 root 状态下,ADB 无法直接访问其他应用的私有目录,保障数据隔离
这些机制平衡了开发便利性与设备安全性,尤其在 Android 6.0 引入运行时权限后,ADB 的权限管控更加严格,部分系统级操作需通过pm grant显式授权。
二、设备管理指令
查看设备信息
指令 | 功能 | 示例 |
adb devices | 列出所有连接的设备 | adb devices -l(显示详细信息) |
adb get-serialno | 获取设备序列号 | adb -s 设备号 get-serialno(指定设备) |
adb shell getprop ro.product.model | 查看设备型号 | - |
adb shell getprop ro.build.version.release | 查看 Android 系统版本 | - |
adb shell wm size | 查看屏幕分辨率 | - |
adb shell wm density | 查看屏幕密度 | - |
实战示例:
# 查看所有设备详细信息
adb devices -l# 查看设备型号和Android版本
adb shell getprop ro.product.model
adb shell getprop ro.build.version.release
设备连接控制
指令 | 功能 | 示例 |
adb kill-server | 停止 ADB 服务器 | - |
adb start-server | 启动 ADB 服务器 | - |
adb reboot | 重启设备 | adb reboot recovery(重启到恢复模式) |
adb connect <IP:端口> | 无线连接设备 | adb connect 192.168.1.100:5555 |
adb disconnect <IP:端口> | 断开无线连接 | adb disconnect 192.168.1.100:5555 |
adb usb | 切换到 USB 连接模式 | - |
adb tcpip <端口> | 切换到无线调试模式 | adb tcpip 5555 |
无线连接步骤:
1.先用 USB 连接设备,设置端口:adb tcpip 5555
2.断开 USB,通过 IP 连接:adb connect 设备IP:5555(设备 IP 在 WLAN 设置中查看)
3.验证连接:adb devices
注意:设备与电脑需在同一局域网,部分设备需开启 "无线调试" 选项(Android 11+)
三、应用操作指令
应用安装与卸载
指令 | 功能 | 示例 |
adb install <APK路径> | 安装应用 | adb install app-debug.apk |
adb install -r <APK路径> | 覆盖安装(保留数据) | adb install -r update.apk |
adb install -s <APK路径> | 安装到 SD 卡 | adb install -s large_app.apk |
adb uninstall <包名> | 卸载应用 | adb uninstall com.example.myapp |
adb uninstall -k <包名> | 卸载但保留数据 | adb uninstall -k com.example.myapp |
常用参数:
- -r:保留数据和缓存文件,用于应用更新
- -t:允许安装测试包
- -d:允许降级安装(低版本覆盖高版本)
实战示例:
# 覆盖安装并保留数据
adb install -r app-release.apk# 卸载应用但保留用户数据
adb uninstall -k com.example.myapp
应用运行控制
指令 | 功能 | 示例 |
adb shell am start -n <包名/Activity名> | 启动应用组件 | adb shell am start -n com.example.myapp/.MainActivity |
adb shell am force-stop <包名> | 强制停止应用 | adb shell am force-stop com.example.myapp |
adb shell am kill <包名> | 杀死应用进程(系统可能重启) | adb shell am kill com.example.myapp |
adb shell pm clear <包名> | 清除应用数据和缓存 | adb shell pm clear com.example.myapp |
adb shell dumpsys package <包名> | 查看应用详细信息 | adb shell dumpsys package com.example.myapp |
启动指定 Activity 示例:
# 启动应用主Activity
adb shell am start -n com.example.myapp/.MainActivity# 启动带参数的Activity
adb shell am start -n com.example.myapp/.DetailActivity -e "id" "123" -e "name" "test"
查看应用安装路径:
adb shell pm path com.example.myapp
四、文件传输指令
电脑与设备间传输文件
指令 | 功能 | 示例 |
adb push <本地路径> <设备路径> | 从电脑发送文件到设备 | adb push ./test.txt /sdcard/ |
adb pull <设备路径> <本地路径> | 从设备拉取文件到电脑 | adb pull /sdcard/logs ./local_logs |
路径说明:
- 设备常用路径:/sdcard/(外部存储根目录)、/data/data/<包名>/(应用私有目录)
- 注意权限:访问/data/data/下的文件可能需要 root 权限
实战示例:
# 推送本地图片到设备相册
adb push ./photo.jpg /sdcard/DCIM/Camera/# 拉取应用缓存文件到本地
adb pull /data/data/com.example.myapp/cache/ ./app_cache
设备内部文件操作
结合adb shell可执行设备内部的文件操作:
# 进入设备shell环境
adb shell# 查看目录内容
ls /sdcard/# 创建目录
mkdir /sdcard/testdir# 移动文件
mv /sdcard/file1.txt /sdcard/testdir/# 复制文件
cp /sdcard/file1.txt /sdcard/testdir/file2.txt# 删除文件
rm /sdcard/test.txt# 查看文件内容
cat /sdcard/log.txt# 退出shell
exit
注意:部分目录操作需要 root 权限,可通过adb root获取(仅适用于已 root 设备或模拟器)
五、调试与诊断指令
日志查看
指令 | 功能 | 示例 |
adb logcat | 查看系统日志 | - |
adb logcat -s <标签> | 过滤指定标签的日志 | adb logcat -s MyAppTag |
adb logcat <包名>:<级别> *:S | 过滤指定应用的日志 | adb logcat com.example.myapp:V *:S |
adb logcat > log.txt | 将日志保存到文件 | - |
adb logcat -c | 清除日志缓存 | - |
日志级别(从低到高):
- V(Verbose):详细信息(默认)
- D(Debug):调试信息
- I(Info):普通信息
- W(Warn):警告信息
- E(Error):错误信息
- F(Fatal):致命错误
- S(Silent):无输出
实战示例:
# 只显示应用的错误日志
adb logcat com.example.myapp:E *:S# 显示所有错误级别以上的日志并保存
adb logcat *:E > error_log.txt
进程与性能监控
指令 | 功能 | 示例 |
adb shell ps | 查看设备进程列表 | `adb shell ps |
adb shell top | 实时查看进程 CPU 占用 | adb shell top -m 10(显示前 10 个进程) |
adb shell dumpsys cpuinfo | 查看 CPU 使用情况 | `adb shell dumpsys cpuinfo |
adb shell dumpsys meminfo <包名> | 查看应用内存使用 | adb shell dumpsys meminfo com.example.myapp |
adb shell dumpsys gfxinfo <包名> | 查看应用渲染性能 | adb shell dumpsys gfxinfo com.example.myapp |
实用技巧:
- adb shell top -d 3:每 3 秒刷新一次进程信息
- adb shell dumpsys meminfo:不加包名可查看系统整体内存使用
- adb shell dumpsys gfxinfo <包名> reset:重置渲染性能统计
屏幕与截图
指令 | 功能 | 示例 |
adb shell screencap <路径> | 截取屏幕并保存到设备 | adb shell screencap /sdcard/screenshot.png |
adb exec-out screencap -p > screenshot.png | 直接截取屏幕到电脑 | - |
adb shell screenrecord <路径> | 录制屏幕视频 | adb shell screenrecord /sdcard/demo.mp4 |
adb pull /sdcard/demo.mp4 | 将录制的视频拉取到电脑 | - |
屏幕录制参数:
- --time-limit 30:限制录制时长(默认 180 秒)
- --bit-rate 4M:设置比特率(默认 4Mbps)
- --size 1280x720:设置录制分辨率
示例:
# 录制60秒,比特率8Mbps的视频
adb shell screenrecord --time-limit 60 --bit-rate 8M /sdcard/gameplay.mp4# 直接截图到电脑
adb exec-out screencap -p > current_screen.png
六、系统与高级指令
系统信息与控制
指令 | 功能 | 示例 |
adb shell getprop | 查看所有系统属性 | `adb shell getprop |
adb shell setprop <属性名> <值> | 设置系统属性(需 root) | - |
adb shell getevent | 查看输入事件(如按键、触摸) | - |
adb shell input <命令> | 模拟输入事件 | adb shell input tap 500 1000(点击屏幕坐标) |
adb shell dumpsys | 查看系统服务状态 | adb shell dumpsys battery(电池状态) |
adb shell date <时间> | 设置系统时间(需 root) | adb shell date 20231231.235959 |
模拟输入示例:
# 点击屏幕坐标(500, 1000)
adb shell input tap 500 1000# 滑动屏幕(从(100,500)到(900,500))
adb shell input swipe 100 500 900 500 500(持续500ms)# 输入文本
adb shell input text "HelloADB"# 按电源键
adb shell input keyevent KEYCODE_POWER# 按返回键
adb shell input keyevent KEYCODE_BACK
权限与 root 相关
指令 | 功能 | 适用场景 |
adb root | 以 root 权限重启 ADB | 已 root 设备获取高级权限 |
adb unroot | 退出 root 权限 | 恢复普通用户模式 |
adb shell su -c <命令> | 以 root 权限执行命令 | adb shell su -c rm /system/app/XXX |
adb shell pm grant <包名> <权限> | 授予应用权限 | adb shell pm grant com.example.myapp android.permission.WRITE_SECURE_SETTINGS |
adb shell pm revoke <包名> <权限> | 撤销应用权限 | adb shell pm revoke com.example.myapp android.permission.CAMERA |
注意:
- 大部分设备需要解锁 Bootloader 才能获取 root 权限
- pm grant只能授予应用在 Manifest 中声明的权限
- 特殊权限(如WRITE_SECURE_SETTINGS)需通过 ADB 或 root 授予
七、实用技巧与常见问题
提高效率的技巧
1.别名设置:为常用指令设置别名(如在.bashrc 中):
alias adbip='adb connect 192.168.1.100:5555'
alias adbl='adb logcat -s MyApp'
alias adbs='adb shell'
2.多设备操作:当连接多个设备时,用-s指定设备:
adb -s 192.168.1.100:5555 install app.apk
adb -s emulator-5554 shell
3.命令组合:结合管道符实现复杂功能:
# 查找应用进程并杀死
adb shell ps | grep com.example.myapp | awk '{print $2}' | xargs adb shell kill
4.ADB 路径自动补全:配置 bash 自动补全脚本,支持指令和路径补全
常见问题解决
1.设备连接失败(offline 状态):
- 解决方案:重启 ADB 服务器(adb kill-server && adb start-server)
- 重新插拔 USB 线或重启设备
2.无权限访问设备(no permissions):
- Windows:在设备上授权 USB 调试
- Linux/macOS:执行sudo chmod 777 /dev/bus/usb/<设备路径>(路径可通过lsusb查看)
3.应用安装失败(INSTALL_FAILED_XXX):
- INSTALL_FAILED_INSUFFICIENT_STORAGE:设备存储空间不足
- INSTALL_FAILED_VERIFICATION_FAILURE:关闭 "验证应用" 选项
- INSTALL_FAILED_UPDATE_INCOMPATIBLE:先卸载旧版本再安装
4.无线连接超时:
- 确保设备与电脑在同一网络
- 检查防火墙设置,允许 5555 端口通信
- 尝试重启设备的网络或 ADB 服务
八、总结
ADB 是 Android 开发的瑞士军刀,掌握这些指令能显著提升日常开发和调试效率。本文涵盖了设备管理、应用操作、文件传输、调试诊断等核心场景的常用指令,建议初学者从基础指令开始练习,逐步掌握高级用法。
实际使用中,不必死记硬背所有指令,可将本文作为速查表随时查阅。随着使用频率增加,自然会熟练掌握常用命令。ADB 的强大之处在于其灵活性,通过组合不同指令,能解决几乎所有设备交互问题,是每个 Android 开发者必备的技能。