ADB常用指令全解析:安卓开发调试的瑞士军刀(附实战技巧)

avatar
莫雨IP属地:上海
02026-01-31:11:56:48字数 4171阅读 2

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系统状态一目了然

📚 延伸学习

总资产 0
暂无其他文章

热门文章

暂无热门文章