1. ADB工具概述与环境配置
ADB(Android Debug Bridge)是Android开发中最基础也最强大的命令行工具之一。作为Google官方提供的调试工具包,它通过USB或网络连接Android设备与开发机,实现设备管理、文件传输、应用调试等核心功能。对于Android开发者、测试工程师甚至普通用户来说,掌握ADB命令都是提升工作效率的必备技能。
1.1 ADB的工作原理与组件构成
ADB采用客户端-服务器架构,主要由三个组件协同工作:
- ADB客户端:运行在开发机上的命令行工具,用户通过它发送各种命令
- ADB服务器:在开发机后台运行的守护进程,管理客户端与设备间的通信
- ADB守护进程(adbd):运行在Android设备上的服务端程序,执行实际命令
这种架构设计使得ADB能够:
- 支持多设备同时连接管理
- 保持稳定的连接状态
- 实现USB和网络两种连接方式
1.2 环境配置详细步骤
Windows平台配置示例:
- 下载最新版Platform Tools工具包(建议从Android开发者官网获取)
- 解压到无中文路径的目录,如
C:\Android\platform-tools - 配置系统环境变量:
- 右键"此电脑"→属性→高级系统设置→环境变量
- 在系统变量的Path中添加platform-tools目录路径
- 验证安装:
应显示类似"Android Debug Bridge version 1.0.41"的版本信息adb version
常见配置问题解决方案:
- 出现"adb不是内部或外部命令":检查环境变量是否包含完整路径,建议重启CMD窗口
- 连接设备无响应:尝试
adb kill-server后重新adb start-server - 权限不足问题:Linux/Mac下可能需要
chmod +x给执行权限
提示:建议将常用ADB命令封装为批处理脚本或Shell函数,可大幅提升日常工作效率。例如创建
adb_connect.bat包含基本连接命令。
2. 设备连接与管理命令精要
2.1 基础连接操作
设备连接是使用ADB的第一步,掌握多种连接方式能适应不同场景需求:
# USB连接基础流程 adb devices -l # 列出已连接设备(-l显示详细信息) adb get-serialno # 获取当前设备序列号 # 无线连接配置(需先USB连接一次) adb tcpip 5555 # 开启设备的TCP/IP端口 adb connect 192.168.1.100:5555 # 通过IP连接设备 # 断开连接 adb disconnect # 断开当前无线连接 adb usb # 切换回USB模式无线连接常见问题排查:
- 确保设备与电脑在同一局域网
- 检查防火墙是否阻止了5555端口
- 使用
adb kill-server重置连接状态 - 通过
ping测试网络连通性
2.2 多设备管理技巧
当同时连接多个设备时,需要通过-s参数指定目标设备:
adb -s 设备序列号 shell # 进入指定设备的shell adb -s emulator-5554 install app.apk # 向特定模拟器安装应用对于频繁使用的设备,可以设置环境变量简化操作:
export ANDROID_SERIAL=设备序列号 # Linux/Mac set ANDROID_SERIAL=设备序列号 # Windows3. 文件系统操作实战
3.1 文件传输命令详解
# 从电脑推送文件到设备 adb push local.txt /sdcard/ # 基本推送 adb push -p local.txt /sdcard/ # 显示传输进度(较新版本支持) # 从设备拉取文件到电脑 adb pull /sdcard/remote.txt ./ adb pull -a /sdcard/folder ./ # 保留文件时间戳和模式 # 特殊场景处理 adb push largefile.zip /sdcard/ # 大文件传输建议先压缩 adb shell mkdir -p /path/to/newfolder # 确保目标目录存在文件传输优化建议:
- 大文件传输使用
-p参数监控进度 - 批量文件操作建议先打包为zip
- 系统目录写入需要root权限
- 遇到"Read-only file system"时尝试
adb remount
3.2 系统目录访问与权限管理
# 查看分区挂载情况 adb shell mount adb shell df -h # 查看磁盘空间 # 修改分区读写状态(需root) adb root # 获取root权限 adb remount # 重新挂载system分区为可写 adb disable-verity # 关闭dm-verity验证(Android 5.0+) # 重要目录说明 /system # 系统核心文件 /vendor # 厂商定制内容 /data # 用户数据存储 /sdcard # 外部存储(实际路径可能不同)4. 应用管理深度解析
4.1 应用安装与卸载
# 常规安装与卸载 adb install -r app.apk # 安装(-r覆盖安装) adb uninstall com.example.app # 卸载用户应用 adb uninstall -k com.example.app # 卸载但保留数据 # 系统应用操作(需root) adb shell pm list packages -s # 列出系统应用 adb shell pm disable-user com.example.bloatware # 禁用预装应用 # 安装参数进阶 adb install --abi armeabi-v7a app.apk # 指定ABI安装 adb install --instant app.apk # 即时应用安装安装失败常见原因:
- INSTALL_FAILED_VERSION_DOWNGRADE:尝试添加
-d参数 - INSTALL_PARSE_FAILED_NO_CERTIFICATES:签名验证失败
- INSTALL_FAILED_INSUFFICIENT_STORAGE:清理设备存储空间
4.2 应用调试与信息获取
# 应用信息查询 adb shell dumpsys package com.example.app # 完整包信息 adb shell pm path com.example.app # 显示APK路径 adb shell pm list features # 设备支持的功能特性 # 调试相关 adb shell am start -D -n com.example.app/.MainActivity # 调试模式启动 adb forward tcp:5039 jdwp:12345 # 端口转发调试 adb shell ps | grep example # 查看应用进程5. 系统调试与高级功能
5.1 日志抓取与分析
# 基础日志抓取 adb logcat -v time > log.txt # 带时间戳输出 adb logcat -b main -b system -b events # 多缓冲区日志 # 高级过滤技巧 adb logcat -s TAG1:TAG2 # 按标签过滤 adb logcat --pid=`adb shell pidof com.example.app` # 按进程ID过滤 # 日志清除与管理 adb logcat -c # 清除日志缓冲区 adb shell rm -rf /data/log/ # 删除日志文件(需root)日志分析建议:
- 使用
grep过滤关键错误信息 - 关注
E/(Error)和W/(Warning)级别日志 - 结合
dmesg查看内核日志
5.2 系统属性与配置调整
# 属性查看与修改 adb shell getprop # 列出所有属性 adb shell setprop debug.layout false # 临时修改属性 adb shell settings put global stay_on_while_plugged_in 1 # 修改系统设置 # 实用调试命令 adb shell dumpsys battery # 电池状态 adb shell dumpsys meminfo # 内存使用情况 adb shell dumpsys gfxinfo # 图形渲染性能6. 自动化脚本与实用技巧
6.1 常用命令组合示例
# 批量安装目录下所有APK for apk in *.apk; do adb install -r "$apk"; done # 自动截图并拉取到电脑 adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png adb shell rm /sdcard/screen.png # 监控应用启动时间 adb shell am start -W com.example.app/.MainActivity6.2 设备控制命令集锦
# 电源管理 adb shell input keyevent 26 # 电源键 adb shell input keyevent 224 # 唤醒设备(Android 4.4+) # 输入模拟 adb shell input text "Hello" # 输入文本 adb shell input tap 300 500 # 点击屏幕坐标 adb shell input swipe 300 1000 300 500 # 滑动操作 # 其他实用命令 adb shell pm trim-caches 512M # 清理缓存 adb shell cmd package bg-dexopt-job # 触发dex优化7. 安全调试与问题排查
7.1 调试授权管理
# 查看调试授权状态 adb shell settings get global adb_enabled adb shell settings get global adb_allowed_connection_time # 安全调试配置 adb shell setprop ro.adb.secure 1 # 启用安全调试(需root) adb shell setprop persist.adb.tcp.port 5555 # 持久化网络调试端口7.2 常见错误解决方案
连接问题:
- "device unauthorized":检查设备是否显示授权对话框
- "insufficient permissions":Linux下可能需要配置udev规则
- "cannot connect to daemon":尝试
adb kill-server && adb start-server
文件操作问题:
- "Read-only file system":需要
adb remount或root权限 - "No space left on device":清理
/data分区或调整分区大小
应用调试问题:
- "Activity not found":检查包名和Activity路径是否正确
- "Permission Denial":添加所需权限或使用root权限