
在 Android 开发与调试领域,Android Debug Bridge(ADB) 堪称 “瑞士军刀” 级工具。无论是应用开发者、测试工程师,还是极客玩家,掌握 ADB 意味着拥有了深入系统底层的能力。它允许我们通过计算机与 Android 设备建立通信,执行诸如安装卸载应用、查看设备日志、执行 Shell 命令等一系列操作,极大地提升了工作效率与设备操控的灵活性。
ADB 即 Android Debug Bridge,是Google官方提供的命令行工具,作为Android SDK(Software Development Kit)的核心组件,它通过USB或Wi-Fi实现计算机与Android设备(手机、平板、手表等)间的通信。开发者可通过ADB完成应用安装调试、文件传输、系统操作等任务,甚至支持刷机、屏幕录制等高级功能。
在开发过程中,当 App 出现 ANR(Application Not Responding)无响应或者 Crash 崩溃等棘手问题时,ADB 能够帮助我们快速抓取日志,为定位和解决问题提供关键线索。简而言之,ADB 就像是连接 Android 设备与 PC 端的超级纽带,借助它,我们能在电脑上对设备进行全方位的深度操作,极大地提升了开发效率与设备管理的便捷性。
ADB采用客户端-服务器-守护进程的三层架构:
adb devices)
adb.exe进程)
adbd服务,接收并执行 Server 发送的指令
当执行adb devices时,服务器会扫描设备并与adbd建立连接,形成完整的通信链路。
1. 下载 ADB 工具包
2. 解压 ADB 工具包

3. 配置环境变量


4. 验证 ADB 是否安装成功

1. USB 连接

2. Wi-Fi 连接(需设备已 root 或支持 ADB 无线调试功能)
adb tcpip 5555adb connect 设备IP地址:5555adb connect 192.168.1.101:55551. 设备管理命令
2. 应用管理命令
adb install C:\Users\yourusername\Downloads\app.apkadb uninstall com.tencent.mm

3. 文件传输命令
adb push C:\Users\yourusername\Documents\test.txt /sdcard/adb pull /sdcard/DCIM/Camera/photo.jpg C:\Users\yourusername\Pictures4. Shell 命令执行
adb shell date
实时日志查看(Logcat)
adb logcat # 显示所有日志
adb logcat -s MyAppTag:I *:S # 过滤标签MyAppTag,级别Info,其他级别Silent
adb logcat --pid=12345 # 仅显示指定进程日志执行 Shell 命令:
adb shell # 进入设备Shell
ls /data/app # 查看应用目录
top -n 1 # 实时进程监控在开发应用或者排查设备问题时,查看设备日志是一个非常重要的手段。ADB 提供的 logcat 命令可以帮助我们获取设备的日志信息。
1. 基本使用方法
在命令提示符或终端中输入 “adb logcat” 命令并回车,此时会实时输出设备的日志信息,这些日志信息包含了系统、应用程序等各个层面的运行记录,对于开发者来说,通过分析这些日志可以了解应用的运行状态,查找程序中的错误和异常。例如,当应用出现崩溃时,在日志中可以找到崩溃的原因和相关的堆栈信息,帮助开发者快速定位问题所在。

2. 日志过滤
adb logcat *:E
adb logcat ActivityManager:*
3. 保存日志到文件
adb logcat > log.txt输出带时间戳的日志到文件
adb logcat -v time > log.txt-v time:显示日志的时间戳(格式:MM-DD HH:MM:SS.mmm)
>:将输出重定向到文件(覆盖原有内容)

追加模式与持续记录:
adb logcat -v threadtime >> log_with_thread.txt-v threadtime:显示完整时间戳 + 进程 ID + 线程 ID
>>:追加到文件(不覆盖原有内容)
过滤特定标签和级别:
adb logcat -s "ActivityManager:I" "MyApp:D" *:S-s:设置过滤器
ActivityManager:I:只显示 ActivityManager 标签的 Info 级别
MyApp:D:只显示 MyApp 标签的 Debug 级别
*:S:其他标签全部静默(Silent)
过滤特定进程 ID:
adb shell ps | grep com.example.app # 获取PID
adb logcat --pid=12345 # 只显示该进程日志常见日志级别
级别 | 含义 | 用途 |
|---|---|---|
V | Verbose | 最详细的调试信息 |
D | Debug | 调试信息 |
I | Info | 关键状态信息 |
W | Warning | 警告信息 |
E | Error | 错误信息 |
F | Fatal | 致命错误 |
S | Silent | 静默(不显示任何日志) |
清空日志缓冲区:
adb logcat -c # 清空所有日志结合 grep 实时过滤
adb logcat | grep "Network" # 实时显示包含"Network"的日志保存特定时间段日志:
adb logcat -v time -T "2023-10-25 10:00:00.000" > specific_time.log-T:从指定时间开始记录
①调试 APK:启用调试模式
adb shell am start -D -n com.example.app/.MainActivity # 启动应用并等待调试器连接②性能分析
获取 CPU 占用:
adb shell dumpsys cpuinfo | grep com.example.app内存使用情况:
adb shell procrank | grep com.example.app③系统级操作
修改系统设置
adb shell settings put system screen_brightness 50 # 设置亮度为50%
adb shell settings get system screen_brightness # 获取当前亮度模拟按键与输入
adb shell input keyevent 26 # 模拟电源键(KeyEvent 26)
adb shell input text "hello world" # 输入文本日志抓取:
adb logcat -v time > log.txt # 带时间戳保存日志
adb logcat -s TAG_NAME # 按标签过滤屏幕操作:
adb exec-out screencap -p > screen.png # 截屏
adb shell screenrecord /sdcard/demo.mp4 # 录屏(默认3分钟)性能监控:
adb shell dumpsys meminfo # 内存分析
adb shell top -n 1 # CPU占用排行adb -s ABCDEFG0123456 shell # 指定设备执行命令
adb devices | awk 'NR>1 {print $1}' > devices.txt # 批量获取设备IDimport subprocess
def adb_command(cmd):
result = subprocess.run(['adb'] + cmd.split(),
capture_output=True, text=True)
return result.stdout
print(adb_command("shell getprop ro.product.model"))adb reboot bootloader # 进入Fastboot模式
fastboot oem unlock # 执行解锁命令风险提示:解锁会清除设备数据,操作前务必备份
fastboot flash system system.img # 刷入系统镜像
fastboot reboot # 重启设备现象:adb devices显示offline或无设备 可能原因与解决方法:
adb kill-server && adb start-server # 重启ADB服务4. USB 线故障:更换原装 USB 线或接口
现象:adb install提示INSTALL_FAILED_*错误 解决方法:
INSTALL_FAILED_ALREADY_EXISTS:先卸载旧版本
INSTALL_FAILED_NO_MATCHING_ABIS:检查 APK 支持的 CPU 架构
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE:清除应用数据后重试
解决方法:
chcp 65001)
adb logcat命令中添加参数:
adb logcat -G /data/local/tmp/logcat.log # 输出到文件查看ADB 作为 Android 开发与调试的核心工具,其功能远不止本文所述。从基础的文件传输到复杂的系统级调试,ADB 贯穿了应用开发的全生命周期。建议在实际项目中多尝试不同命令组合,并结合官方文档(ADB Documentation)深入探索。随着 Android 系统的更新,ADB 也在不断演进,保持对新技术的关注(如 ADB over TCP/IP、Wireless Debugging)将帮助您始终站在开发效率的前沿。