ADB 使用手册 速览
一、工具基础介绍
1.1 核心功能定位
ADB(Android Debug Bridge)是 Android 官方调试工具,提供以下核心能力:
- 设备通信:通过 USB/Wi-Fi 与 Android 设备交互
- 应用调试:安装/卸载 APK、调试应用崩溃
- 系统控制:重启设备、进入 Recovery 模式
- 日志捕获:实时获取 Logcat 日志
- 文件操作:推送/拉取设备文件(支持 adbfs 挂载)
- 自动化测试:执行 Monkey 测试、录制/回放操作
1.2 工作原理架构
二、核心命令详解
2.1 设备连接管理
基础连接:
# USB 连接
adb devices
# Wi-Fi 连接(需同一局域网)
adb tcpip 5555
adb connect 192.168.1.100:5555
# 多设备操作
adb -s emulator-5554 shell
高级调试:
# 无线 ADB 持久化
echo "persist.adb.tcp.port=5555" >> /system/build.prop
adb reboot
# 端口转发
adb forward tcp:8081 tcp:8081 # 本地转发
adb reverse tcp:8081 tcp:8081 # 反向转发
2.2 文件操作命令
基础传输:
# 推送文件
adb push local.txt /sdcard/Download/
# 拉取文件
adb pull /sdcard/DCIM/photo.jpg ./
# 同步目录
adb sync /system/app # 仅同步变更
高级操作:
# 挂载为文件系统
adb shell
su
mount --bind /data /mnt/data # 需 root 权限
# 批量操作示例
adb shell "ls /sdcard/* | xargs -I{} cp {} /data/local/tmp"
2.3 应用调试命令
基础管理:
# 安装 APK
adb install -r app-release.apk # -r 覆盖安装
# 卸载应用
adb uninstall com.example.app
# 强制停止应用
adb shell am force-stop com.example.app
高级调试:
# 启动 Activity
adb shell am start -n com.example.app/.MainActivity
# 发送广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
# 截图保存
adb exec-out screencap -p > screen.png
# 录制屏幕
adb shell screenrecord /sdcard/demo.mp4
2.4 日志捕获命令
基础日志:
# 实时日志
adb logcat -v time
# 按标签过滤
adb logcat -s "ActivityManager:D MyApp:V"
# 保存日志
adb logcat -d > log.txt
高级分析:
# 崩溃日志分析
adb logcat -b crash
# 内核日志
adb shell dmesg > kernel.log
# 跟踪系统调用
adb shell strace -p 1234
三、高级应用场景
3.1 自动化测试
Monkey 测试:
# 基础压力测试
adb shell monkey -p com.example.app -v 500
# 高级参数
--throttle 500 # 操作间隔 500ms
--pct-touch 30 # 30% 触摸事件
--ignore-crashes # 忽略崩溃继续执行
UI Automator 测试:
// 示例:点击坐标 (500, 1000)
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
device.click(500, 1000);
3.2 性能调优
内存分析:
# 实时内存监控
adb shell dumpsys meminfo com.example.app
# 堆转储
adb shell am dumpheap com.example.app /data/local/tmp/heap.hprof
adb pull /data/local/tmp/heap.hprof ./
CPU 分析:
# 跟踪方法调用
adb shell am tracepath com.example.app
# 火焰图生成
adb shell perfetto --txt -o trace.txt
3.3 安全分析
权限审计:
# 检查危险权限
adb shell dumpsys package com.example.app | grep -A 20 "requested permissions"
# 动态权限授予
adb shell pm grant com.example.app android.permission.CAMERA
漏洞扫描:
# 检测已知漏洞
adb shell dumpsys package com.example.app | grep "versionCode"
# 对比 CVE 数据库
3.4 系统定制
Magisk 模块:
# 安装模块
adb push module.zip /sdcard/Download/
adb shell su -c "magisk --install-module /sdcard/Download/module.zip"
# 模块管理
adb shell magisk --list-modules
自定义 Recovery:
# 刷入 TWRP
adb reboot bootloader
fastboot flash recovery twrp.img
四、常见问题解决
4.1 连接问题
现象:device unauthorized
解决方案:
- 撤销授权:
adb kill-server
- 重新插拔设备
- 允许 USB 调试
现象:offline
状态
解决方案:
adb kill-server
adb start-server
adb devices
4.2 权限问题
现象:Operation not permitted
解决方案:
# 重新挂载系统分区
adb shell
su
mount -o remount,rw /system
现象:SELinux denied
解决方案:
# 临时禁用 SELinux
adb shell setenforce 0
4.3 性能瓶颈
现象:adb slow
优化方案:
- 启用 ADB 无线调试
- 关闭无关服务:
adb shell settings put global adb_enabled 0
- 使用
adb connect
替代 USB
五、最佳实践指南
5.1 设备管理策略
- 使用
adb backup
定期备份设备 - 配置
adb_usb.ini
加速设备识别 - 建立设备池管理脚本:
#!/bin/bash
for SERIAL in $(adb devices | grep -v List | awk '{print $1}'); do
echo "Processing $SERIAL..."
adb -s $SERIAL shell input keyevent 26 # 唤醒设备
done
5.2 调试流程优化
- 使用
adb logcat -c
清除旧日志 - 配置
~/.android/adb_usb.ini
加速连接 - 开发阶段启用
adb wait-for-device
5.3 安全规范
- 禁用开发模式:
adb shell settings put global development_settings_enabled 0
- 加密 ADB 传输:
adb --enable-aes-256-encryption
- 定期审计
adb shell pm list packages