0赞
赏
赞赏
更多好文
ADB常用指令全解析:安卓开发调试的瑞士军刀(附实战技巧)
从设备连接到性能调优,20+高频指令+避坑指南,助你效率翻倍
本文基于ADB 1.0.41+,适配Android 5.0~14主流机型
一、ADB是什么?为什么开发者离不开它?
ADB(Android Debug Bridge) 是Android SDK提供的命令行工具,作为开发机与安卓设备的通信桥梁,实现:
- 📱 应用安装/调试/卸载
- 📁 文件双向传输
- 🖥️ 设备日志实时监控
- 🎮 模拟用户操作(点击/滑动/输入)
- 🔍 深度系统诊断(内存/CPU/电池)
💡 核心价值:无需ROOT,即可完成90%的设备级操作,是移动开发、测试、逆向工程师的必备技能。
二、环境准备:3步打通任督二脉
# 1. 安装(任选其一)
# - Android Studio自带(推荐):SDK Platform-Tools
# - 独立下载:https://developer.android.com/studio/releases/platform-tools
# - Homebrew(Mac):brew install android-platform-tools
# 2. 设备开启USB调试
设置 → 关于手机 → 连点"版本号"7次 → 返回开启"开发者选项" → 启用"USB调试"
# 3. 验证连接
adb devices
# 成功输出示例:
# List of devices attached
# ABC123456789 device ← 出现"device"即授权成功
⚠️ 连接失败排查:
- 未授权:拔插USB,手机弹窗点“允许”
- 驱动问题:安装手机品牌官方驱动(小米/华为等)
- 端口占用:
adb kill-server && adb start-server - WiFi连接(免数据线):
adb tcpip 5555 # 先USB连接执行 adb connect 192.168.x.x:5555 # 后续直接WiFi连接
三、高频指令分类速查(附实战场景)
🔌 设备管理
| 指令 | 说明 | 实战技巧 |
|---|---|---|
adb devices -l | 列出详细设备信息(型号/序列号) | 多设备时精准指定:adb -s ABC123 shell |
adb disconnect | 断开所有WiFi连接 | 避免误操作其他设备 |
adb reboot | 重启设备 | adb reboot recovery 进恢复模式 |
adb root | 重启adbd获取root权限(需设备支持) | 部分定制ROM可用 |
📦 应用操作
# 安装(覆盖安装+保留数据)
adb install -r -d app-release.apk
# 卸载(保留配置数据)
adb uninstall -k com.example.app
# 启动指定Activity(调试深层页面)
adb shell am start -n com.example.app/.MainActivity -a android.intent.action.MAIN
# 清除应用数据(等效“清除数据”)
adb shell pm clear com.example.app
# 查看前台Activity(定位卡顿页面)
adb shell dumpsys activity activities | grep mResumedActivity
📤 文件传输
# 电脑→手机
adb push ~/report.pdf /sdcard/Download/
# 手机→电脑(带进度)
adb pull /sdcard/log.txt ./logs/ --progress
# 删除设备文件
adb shell rm /sdcard/temp.apk
📜 日志调试(Logcat精髓)
# 实时监控(带时间戳+颜色)
adb logcat -v time -b main
# 仅看错误日志(快速定位崩溃)
adb logcat *:E
# 过滤指定包名日志
adb logcat --pid=$(adb shell pidof -s com.example.app)
# 清空日志缓冲区
adb logcat -c
# 保存日志到文件(带时间命名)
adb logcat -v threadtime > log_$(date +%Y%m%d_%H%M%S).txt
🖼️ 屏幕操作
# 一键截图到电脑(无需中间文件)
adb exec-out screencap -p > screen_$(date +%H%M%S).png
# 录制10秒高清视频(最大180秒)
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4
adb pull /sdcard/demo.mp4 && adb shell rm /sdcard/demo.mp4
# 模拟操作(自动化测试基石)
adb shell input tap 500 1000 # 点击坐标
adb shell input swipe 100 500 100 100 300 # 滑动(持续300ms)
adb shell input text "HelloADB" # 输入文本(注意:不支持中文需转Unicode)
adb shell input keyevent 3 # HOME键(keycode查表)
🔍 系统诊断
# 查看电池状态
adb shell dumpsys battery
# 监控内存(实时刷新)
adb shell top -m 10 -s rss -d 2 # 每2秒刷新,按内存排序
# 查看应用内存详情
adb shell dumpsys meminfo com.example.app
# 网络端口转发(调试本地服务)
adb forward tcp:8080 tcp:8080 # 将设备8080映射到PC 8080
四、高阶技巧:效率倍增实战
💡 场景1:快速定位ANR(应用无响应)
adb pull /data/anr/traces.txt ./anr_log.txt
# 分析主线程堆栈,定位卡顿代码
💡 场景2:批量安装测试包(Shell脚本)
#!/bin/bash
for apk in *.apk; do
echo "Installing $apk..."
adb install -r "$apk"
done
💡 场景3:模拟弱网环境(需root)
adb shell tc qdisc add dev wlan0 root netem delay 200ms # 增加200ms延迟
adb shell tc qdisc del dev wlan0 root # 恢复
五、避坑指南:血泪经验总结
| 问题 | 解决方案 |
|---|---|
| 中文输入乱码 | 用Unicode输入:adb shell input text "\u4F60\u597D"(需转换工具) |
| logcat日志爆炸 | 用-s "TAG:V"精准过滤,避免*:V |
| 多设备操作混乱 | 所有命令加-s 序列号(如adb -s ABC123 install app.apk) |
| 截图黑屏 | 部分厂商限制:尝试adb shell screencap -p /sdcard/s.png后pull |
| 权限被拒 | 检查USB调试授权;部分操作需adb shell su -c "命令"(需root) |
六、结语:工具是手,思维是脑
ADB的价值远不止指令本身:
- ✅ 建立“设备即终端”的调试思维
- ✅ 将重复操作脚本化,释放人力
- ✅ 深度理解Android系统运行机制
🌟 行动建议:
1️⃣ 将本文指令表存为本地Markdown备查
2️⃣ 今日起用adb exec-out screencap替代手动截图
3️⃣ 尝试写一个“一键清理测试包”脚本
真正的高手,不是记住所有命令,而是知道何时用哪个工具解决问题。
掌握ADB,你已握紧通往高效安卓开发的钥匙 🔑
📎 附录:ADB指令速查表(建议收藏)
| 类别 | 核心指令 | 记忆口诀 |
|---|---|---|
| 连接 | devices, connect, disconnect | 先认设备再操作 |
| 应用 | install, uninstall, pm clear | 装卸清三板斧 |
| 日志 | logcat -v time, logcat *:E | 错误优先看 |
| 文件 | push, pull, shell rm | 推拉删要小心 |
| 屏幕 | exec-out screencap, screenrecord | 截图录屏无痕 |
| 诊断 | dumpsys battery, top | 系统状态一目了然 |
📚 延伸学习:
- 官方文档:
adb help- keycode全表:https://developer.android.com/reference/android/view/KeyEvent
- 开源工具推荐:Scrcpy(屏幕投射)、ADB Idea(Android Studio插件)
