
1. 为什么需要掌握ADB命令作为一名Android开发者或测试工程师ADBAndroid Debug Bridge是我们日常工作中最常用的工具之一。它就像一把瑞士军刀能帮我们解决各种Android设备上的问题。记得我刚入行时每次看到同事在终端里敲几行命令就能搞定设备连接、日志抓取、应用安装等问题都觉得特别神奇。ADB本质上是一个客户端-服务器程序包含三个核心组件客户端运行在开发机器上的命令行工具就是我们在终端输入的adb命令守护进程adbd运行在设备后台服务器管理客户端和守护进程通信的中间层提示即使你主要使用Android Studio进行开发掌握ADB命令也能大幅提升工作效率。很多图形界面操作背后其实都是在调用ADB命令。2. ADB环境配置与基础命令2.1 安装与设备连接在开始使用ADB前我们需要确保开发环境配置正确。以MacOS为例# 通过Homebrew安装Android平台工具 brew install --cask android-platform-tools # 检查adb版本 adb version连接设备时最常见的坑是USB调试未开启。需要在设备的开发者选项中连续点击版本号7次激活开发者模式开启USB调试对于Android 11设备还需额外开启无线调试连接后验证设备列表adb devices如果设备显示为unauthorized需要在设备上弹出的授权对话框中点击确认。2.2 基础命令速查表这些是我每天都会用到的核心命令命令作用使用频率adb shell进入设备shell环境★★★★★adb install apk安装应用★★★★adb uninstall 包名卸载应用★★★adb logcat查看设备日志★★★★★adb reboot重启设备★★adb push 本地 设备路径推送文件到设备★★★adb pull 设备路径 本地从设备拉取文件★★★★3. 高级调试技巧与实战场景3.1 日志过滤与分析原始logcat输出往往信息过载。我常用的过滤组合# 按标签和级别过滤 adb logcat -s MyAppTag:I *:E # 按进程ID过滤先通过ps找到pid adb logcat --pidpid # 清空日志缓冲区后重新记录 adb logcat -c adb logcat对于崩溃分析这个命令能救命adb logcat *:E | grep -A 20 -B 20 Crash3.2 应用管理进阶操作强制停止应用并清除数据adb shell am force-stop com.example.app adb shell pm clear com.example.app查看应用安装路径adb shell pm path com.example.app获取应用详细信息版本、权限等adb shell dumpsys package com.example.app3.3 屏幕与输入操作截图和录屏是测试必备技能# 截图 adb exec-out screencap -p screenshot.png # 录屏需Android 4.4 adb shell screenrecord /sdcard/demo.mp4 # 按CtrlC停止模拟按键事件# 返回键 adb shell input keyevent 4 # 主屏键 adb shell input keyevent 3 # 输入文本 adb shell input text hello4. 无线调试与网络相关命令4.1 无线连接配置USB连接不稳定时无线调试是更好的选择# 首先通过USB连接 adb tcpip 5555 adb connect 设备IP:5555 # 断开USB后验证 adb devices注意部分厂商设备需要先在开发者选项中开启无线调试。4.2 网络诊断工具检查设备网络状态adb shell netstat adb shell ifconfig adb shell ping -c 4 google.com端口转发调试本地服务时特别有用adb forward tcp:8080 tcp:80805. 系统级操作与性能分析5.1 系统信息查询获取设备基本信息adb shell getprop ro.product.model # 设备型号 adb shell getprop ro.build.version.release # Android版本 adb shell wm size # 屏幕分辨率 adb shell dumpsys battery # 电池状态5.2 性能监控查看CPU使用情况adb shell top -n 1内存分析adb shell dumpsys meminfo 包名GPU渲染分析adb shell dumpsys gfxinfo 包名5.3 系统设置修改修改系统设置需rootadb shell settings put global window_animation_scale 0.5 # 调慢动画速度 adb shell settings put system screen_off_timeout 600000 # 设置息屏时间6. 实用脚本与自动化技巧6.1 常用脚本模板批量安装APKfor apk in *.apk; do adb install $apk done自动截图并拉取adb exec-out screencap -p /tmp/screen.png open /tmp/screen.png6.2 结合Shell脚本监控应用启动时间start$(date %s.%N) adb shell am start -W com.example.app/.MainActivity end$(date %s.%N) echo 启动耗时: $(echo $end - $start | bc) 秒6.3 自动化测试集成在CI/CD中常用的命令# 安装测试APK adb install -t app-debug-androidTest.apk # 运行测试 adb shell am instrument -w com.example.app.test/androidx.test.runner.AndroidJUnitRunner7. 疑难问题排查指南7.1 设备连接问题如果adb devices不显示设备检查USB线是否支持数据传输尝试不同USB端口重启adb服务adb kill-server adb start-server检查设备驱动Windows平台常见问题7.2 权限问题处理遇到权限拒绝时可以尝试adb root # 需要已root设备 adb disable-verity # 关闭验证开发设备 adb remount # 重新挂载系统分区为可写7.3 日志分析技巧分析ANR应用无响应adb pull /data/anr/traces.txt分析Native崩溃adb logcat | grep -i signal8. 安全注意事项与最佳实践生产环境谨慎使用adb root命令不要随意修改系统属性setprop无线调试后及时断开adb disconnect敏感操作前备份数据adb backup定期更新platform-tools到最新版本我在实际工作中发现很多团队会编写自己的ADB命令集把常用操作封装成脚本。比如我们团队就有专门的设备初始化脚本包含以下功能设置开发者选项安装常用测试应用配置代理设置禁用动画效果加快测试速度最后分享一个冷知识通过ADB可以修改设备显示的DPI设置这在测试不同屏幕适配时很有用adb shell wm density 320