ADB命令全解析:从基础操作到高级调试技巧

一、ADB基础架构与连接管理

1.1 通信原理与连接模式

ADB通过Socket TCP端口(默认5555)实现设备与主机的双向通信,支持有线/无线两种连接方式。有线连接需在开发者选项中启用USB调试模式,并选择MTP传输协议;无线连接需先通过有线方式执行adb tcpip 5555命令切换端口,再使用adb connect <IP>建立连接。

典型错误处理:

  1. # 连接拒绝错误排查
  2. cannot connect to 192.168.0.109:5555
  3. # 解决方案:
  4. 1. 确认设备防火墙未拦截5555端口
  5. 2. 检查USB调试模式是否持续激活
  6. 3. 执行adb kill-server重置服务

1.2 设备状态管理

基础设备查询命令:

  1. adb devices # 列出已连接设备
  2. adb devices -l # 显示详细设备信息(含序列号、连接类型)
  3. adb get-state # 检查设备状态(device/offline/unknown)

多设备操作技巧:

  1. # 指定设备序列号执行命令
  2. adb -s emulator-5554 shell pm list packages
  3. # 批量操作脚本示例
  4. for device in $(adb devices | grep -v List | awk '{print $1}'); do
  5. adb -s $device install app.apk
  6. done

二、系统信息与日志分析

2.1 硬件信息采集

关键系统属性查询:

  1. # 设备型号与固件信息
  2. adb shell getprop ro.product.model
  3. adb shell getprop ro.build.version.release
  4. # 构建时间与编译类型
  5. adb shell getprop ro.build.date
  6. adb shell getprop ro.build.type # user/userdebug/eng

日志过滤实战:

  1. # 实时日志监控(按标签过滤)
  2. adb logcat ActivityManager:I *:S
  3. # 日志持久化存储
  4. adb logcat -d > full_log.txt
  5. adb logcat -c # 清空日志缓冲区
  6. # 崩溃日志专项提取
  7. adb logcat | grep -i "crash" --color=auto

2.2 性能数据采集

内存分析命令组:

  1. # 进程内存占用
  2. adb shell dumpsys meminfo <package_name>
  3. # 实时内存监控(每2秒刷新)
  4. adb shell cat /proc/meminfo | grep -E "MemTotal|MemFree"
  5. while true; do adb shell free | head -n 2; sleep 2; done

CPU使用率监控:

  1. # 整体CPU占用
  2. adb shell top -n 1 | head -10
  3. # 指定进程CPU监控
  4. adb shell top -n 1 | grep <package_name>

三、应用生命周期管理

3.1 部署与卸载

APK安装进阶选项:

  1. # 普通安装
  2. adb install app.apk
  3. # 覆盖安装(保留数据)
  4. adb install -r app.apk
  5. # 降级安装(需允许测试包)
  6. adb install -t -d app.apk
  7. # 卸载并清除数据
  8. adb uninstall -k <package_name> # 保留数据
  9. adb uninstall <package_name> # 完全卸载

批量操作脚本示例:

  1. # 批量安装APK
  2. find . -name "*.apk" | while read file; do
  3. adb install "$file"
  4. done
  5. # 卸载所有第三方应用
  6. adb shell pm list packages -3 | awk -F':' '{print $2}' | xargs -I {} adb uninstall {}

3.2 运行时控制

进程管理命令:

  1. # 强制停止应用
  2. adb shell am force-stop <package_name>
  3. # 清除应用数据
  4. adb shell pm clear <package_name>
  5. # 启动Activity(含Extra参数)
  6. adb shell am start -n com.example/.MainActivity \
  7. --es key_string "value" \
  8. --ez key_boolean true

四、高级调试技巧

4.1 屏幕交互模拟

输入事件控制:

  1. # 坐标点击(需开启指针位置显示)
  2. adb shell input tap 500 800
  3. # 滑动操作(x1,y1 -> x2,y2)
  4. adb shell input swipe 300 1000 300 500 200 # 最后参数为持续时间(ms)
  5. # 文本输入(需处理特殊字符)
  6. adb shell input text "Hello%sWorld" # %s表示空格
  7. adb shell input keyevent 66 # 模拟回车键(KEYCODE_ENTER)

4.2 系统参数调优

动态属性修改:

  1. # 查看所有系统属性
  2. adb shell getprop | grep -i "screen"
  3. # 修改显示密度(需root)
  4. adb shell setprop persist.sys.dpi 480
  5. adb reboot # 重启生效
  6. # 开发模式快捷开关
  7. adb shell settings put global development_settings_enabled 1

4.3 自动化测试支持

Monkey测试命令:

  1. # 基础压力测试(1000次随机事件)
  2. adb shell monkey -p com.example --throttle 500 -v 1000
  3. # 高级配置示例
  4. adb shell monkey \
  5. -p com.example \
  6. --pct-touch 40 \ # 触摸事件占比
  7. --pct-motion 30 \ # 滑动事件占比
  8. --throttle 200 \ # 事件间隔(ms)
  9. --ignore-crashes \ # 忽略崩溃
  10. --monitor-native-crashes \
  11. -v -v 5000 > monkey.log

五、安全与权限管理

5.1 权限控制

运行时权限管理:

  1. # 查看应用权限
  2. adb shell dumpsys package <package_name> | grep -i "granted"
  3. # 撤销危险权限(需ADB 1.0.36+)
  4. adb shell pm revoke <package_name> android.permission.CAMERA

5.2 安全调试

安全连接配置:

  1. # 生成ADB密钥对
  2. adb keygen /path/to/adbkey
  3. # 指定密钥文件连接
  4. export ANDROID_ADB_SERVER_PRIVATE_KEY=/path/to/adbkey
  5. adb connect <IP>

六、最佳实践建议

  1. 连接稳定性优化

    • 无线调试时固定设备IP地址
    • 使用adb start-server主动初始化服务
    • 避免同时操作多台设备时遗漏序列号参数
  2. 日志管理策略

    • 按日期分割日志文件(adb logcat -d > log_$(date +%Y%m%d).txt
    • 使用logcat -c定期清理缓冲区
    • 关键操作前后执行日志快照
  3. 自动化脚本设计

    1. # 完整测试流程示例
    2. #!/bin/bash
    3. adb install test.apk
    4. adb shell am start -n com.example/.MainActivity
    5. sleep 5
    6. adb shell input tap 500 1200
    7. adb logcat -d > test_result.log
    8. adb uninstall com.example
  4. 性能监控组合拳

    • 同时采集topmeminfobattery数据
    • 使用sysctl命令监控内核参数
    • 结合systrace进行系统级分析

通过系统掌握这些命令组合与调试技巧,开发者可构建完整的移动端问题诊断体系,显著提升开发效率与产品质量。建议结合具体业务场景建立常用命令库,并通过持续实践深化对Android系统机制的理解。