ADB(Android Debug Bridge)是命令行工具,通过USB或网络连接安卓设备,实现安装调试应用、传输文件、执行Shell命令等设备管理操作。
ADB,全称Android Debug Bridge,是谷歌官方Android SDK(软件开发工具包)中一个不可或缺的命令行工具,它充当了你的电脑与连接的Android设备(或模拟器)之间的“桥梁”,允许你执行各种设备操作和调试任务,对于开发者、高级用户、测试人员或需要进行深度设备管理的人来说,掌握ADB是必备技能,本文将详细介绍ADB的安装、配置、常用命令及使用场景。
理解ADB的核心价值
ADB的核心作用在于提供了一种从电脑端直接与Android设备系统层交互的途径,通过ADB命令,你可以:
- 安装与卸载应用: 直接在设备上安装APK文件或卸载系统/用户应用。
- 文件传输: 在电脑和设备之间复制文件(上传/下载)。
- 访问设备Shell: 进入设备的Linux命令行环境(
adb shell
),执行更底层的命令(需要相应权限)。 - 设备信息查询: 获取设备型号、Android版本、序列号、网络状态、电池信息等。
- 日志抓取: 捕获和分析设备运行时的系统日志(
logcat
),是调试应用崩溃和系统问题的关键。 - 屏幕截图与录屏: 直接在命令行中截取设备屏幕或录制屏幕操作。
- 端口转发/反向转发: 将设备端口映射到电脑端口或反之,用于网络调试(如Web应用调试)。
- 重启设备/进入特定模式: 重启设备到系统、Recovery模式、Bootloader模式等。
- 管理进程: 查看、终止设备上运行的进程。
- 模拟输入/按键事件: 模拟触摸、滑动、按键等操作(自动化测试常用)。
- 备份与恢复: (部分功能已弃用或有限制)执行设备数据的备份与恢复。
准备工作:安装与配置ADB环境
要使用ADB,你需要在你的电脑(Windows, macOS, Linux)上设置好环境:
-
下载并安装Android SDK Platform-Tools:
- 这是最推荐的方式,包含了最新的
adb
、fastboot
等工具。 - 官方下载地址: https://developer.android.com/studio/releases/platform-tools (谷歌开发者官网)
- 选择对应你操作系统的ZIP文件下载。
- 解压到一个方便的位置,
- Windows:
C:\platform-tools
- macOS/Linux:
~/platform-tools
或/usr/local/bin/platform-tools
- Windows:
- 这是最推荐的方式,包含了最新的
-
将ADB添加到系统PATH环境变量(重要!):
- 这一步是为了让你能在任何命令行窗口(如CMD、PowerShell、Terminal)中直接输入
adb
命令,而无需每次都进入platform-tools
目录。 - Windows:
- 右键点击“此电脑”或“计算机” -> “属性” -> “高级系统设置” -> “环境变量”。
- 在“系统变量”区域,找到并选中
Path
变量,点击“编辑”。 - 点击“新建”,然后输入你解压
platform-tools
的完整路径(C:\platform-tools
)。 - 点击“确定”保存所有更改。
- macOS/Linux:
- 打开终端(Terminal)。
- 编辑你的shell配置文件(通常是
~/.bashrc
,~/.zshrc
, 或~/.profile
),在文件末尾添加一行:export PATH=$PATH:/path/to/platform-tools
(将
/path/to/platform-tools
替换为你实际的解压路径,如~/platform-tools
或/usr/local/bin/platform-tools
) - 保存文件,然后在终端运行
source ~/.bashrc
(或对应的配置文件) 使更改立即生效,或者重启终端。
- 这一步是为了让你能在任何命令行窗口(如CMD、PowerShell、Terminal)中直接输入
-
在Android设备上启用USB调试:
- 这是允许ADB通过USB与设备通信的关键步骤。
- 进入设备的“设置”。
- 找到“关于手机”(或类似选项)。
- 连续点击“版本号”7次,直到看到“您已处于开发者模式”的提示。
- 返回设置主菜单或进入“系统”设置,现在你应该能看到“开发者选项”。
- 进入“开发者选项”。
- 找到“USB调试”选项并启用它。
- (重要安全提示) 启用USB调试意味着授予连接的电脑对设备的高级访问权限,请确保只在受信任的电脑上启用此功能,并在不使用时考虑关闭它。
-
连接设备并授权:
- 使用USB数据线将设备连接到电脑。
- 在设备上,可能会弹出“允许USB调试吗?”的提示框,并显示你电脑的RSA密钥指纹。
- 勾选“始终允许此计算机”(如果信任该电脑),然后点击“确定”。
- 如果未弹出提示,检查USB连接是否正常(尝试更换线缆或端口),并确保在开发者选项中USB调试已开启,有时需要断开重连或重启ADB服务 (
adb kill-server
adb start-server
)。
验证连接:基础命令
打开你的命令行终端(CMD, PowerShell, Terminal),输入以下命令验证ADB是否安装成功且设备已连接:
-
检查ADB版本:
adb version
这将显示已安装的ADB客户端版本。
-
列出已连接的设备:
adb devices
- 如果一切正常,你会看到类似以下的输出:
List of devices attached 1234567890ABCDEF device
- 第一列是设备的序列号,第二列是连接状态(
device
表示已连接并授权)。 - 如果看到
unauthorized
,请检查设备上的授权提示。 - 如果没列出设备,请检查USB连接、驱动(Windows可能需要安装特定设备驱动)、USB调试是否开启。
- 如果一切正常,你会看到类似以下的输出:
常用ADB命令详解与示例
以下是一些最常用和实用的ADB命令,按功能分类:
应用管理
-
安装应用 (APK):
adb install path/to/your_app.apk
- 安装位于电脑上指定路径的APK文件到设备。
- 覆盖安装 (
-r
):adb install -r ...
保留数据重新安装。 - 测试安装 (
-t
):adb install -t ...
允许安装测试包。 - 多用户安装 (
--user <user_id>
): 指定安装到哪个用户(0通常是主用户)。
-
卸载应用:
adb uninstall com.example.packagename
- 卸载指定包名的应用(需要知道应用的完整包名)。
- 保留数据/缓存 (
-k
):adb uninstall -k ...
只卸载应用,保留数据和缓存目录(通常不推荐)。
文件传输
-
将电脑文件推送到设备:
adb push local/path/on/PC /sdcard/path/on/device
adb push C:\Users\Me\picture.jpg /sdcard/Download/
将电脑的图片推送到设备的下载目录。/sdcard/
通常指向设备的内部存储或模拟的SD卡。
-
将设备文件拉取到电脑:
adb pull /path/on/device local/path/on/PC
adb pull /sdcard/DCIM/Camera/video.mp4 ~/Videos/
将设备上的视频拉取到电脑的Videos目录。
设备信息与状态
-
获取设备序列号:
adb get-serialno
-
查看设备状态:
adb get-state
- 可能返回
device
,offline
,unauthorized
,unknown
。
- 可能返回
-
查看设备型号:
adb shell getprop ro.product.model
-
查看Android版本:
adb shell getprop ro.build.version.release
-
查看设备IP地址 (Wi-Fi):
adb shell ip addr show wlan0
(接口名可能不同,如
rmnet_data0
是移动数据)
设备Shell操作 (adb shell
)
-
进入设备的交互式Shell:
adb shell
- 此时提示符通常会变成设备的提示符(如
device:/ $
或root@device:/ #
)。 - 可以执行标准的Linux命令 (
ls
,cd
,cat
,ps
,top
,rm
,cp
,mv
,chmod
,ping
等)。 - 输入
exit
或按Ctrl + D
退出Shell回到电脑命令行。
- 此时提示符通常会变成设备的提示符(如
-
直接在电脑命令行执行设备Shell命令:
adb shell <command>
-
adb shell ls /sdcard/
– 列出设备/sdcard目录内容。adb shell pm list packages
– 列出设备上所有已安装应用的包名。adb shell dumpsys battery
– 查看详细的电池信息。adb shell settings get global airplane_mode_on
– 查看飞行模式状态(0关闭,1开启)。adb shell am start -n com.example.packagename/.MainActivity
– 启动指定应用的主Activity。
-
日志抓取 (logcat
)
-
实时查看系统日志:
adb logcat
- 信息会持续滚动输出,按
Ctrl + C
停止。 - 信息量巨大,通常需要过滤。
- 信息会持续滚动输出,按
-
过滤日志 (按标签TAG或优先级):
adb logcat -s TAG_NAME:Priority
-
adb logcat -s MyApp:D
– 只显示标签为”MyApp”且优先级为Debug及以上的日志。adb logcat *:E
– 只显示所有标签的错误(Error)级别日志。
- 优先级:
V
(Verbose – 全部),D
(Debug),I
(Info),W
(Warn),E
(Error),F
(Fatal),S
(Silent).
-
-
将日志输出到文件:
adb logcat > log.txt
(按
Ctrl + C
停止捕获)
屏幕操作
-
截取屏幕:
adb exec-out screencap -p > screenshot.png
- 将当前屏幕截图保存到当前目录下的
screenshot.png
文件,这是最可靠的方法。
- 将当前屏幕截图保存到当前目录下的
-
录制屏幕 (Android 4.4+):
adb shell screenrecord /sdcard/demo.mp4
- 开始录制屏幕,默认保存到设备
/sdcard/demo.mp4
。 - 按
Ctrl + C
停止录制(默认最长3分钟)。 - 使用
--time-limit N
设置最大秒数,--size WxH
设置分辨率,--bit-rate RATE
设置比特率。
- 开始录制屏幕,默认保存到设备
端口转发
-
将设备端口映射到电脑端口:
adb forward tcp:local_port tcp:device_port
adb forward tcp:8080 tcp:8080
将设备上的8080端口映射到电脑的8080端口,常用于在电脑浏览器访问设备上运行的Web服务。
-
将电脑端口映射到设备端口 (反向转发):
adb reverse tcp:device_port tcp:local_port
adb reverse tcp:8080 tcp:8080
允许设备访问电脑上运行在8080端口的服务。
重启与模式切换
-
重启设备:
adb reboot
-
重启到Recovery模式:
adb reboot recovery
-
重启到Bootloader/Fastboot模式:
adb reboot bootloader
其他实用命令
-
重启ADB守护进程:
adb kill-server adb start-server
(解决连接问题时常用)
-
查看设备进程:
adb shell ps
-
强制停止应用:
adb shell am force-stop com.example.packagename
-
模拟按键事件:
adb shell input keyevent KEYCODE
-
adb shell input keyevent KEYCODE_HOME
– 按Home键。adb shell input keyevent KEYCODE_BACK
– 按返回键。adb shell input keyevent KEYCODE_POWER
– 按电源键。adb shell input keyevent KEYCODE_VOLUME_UP
– 音量加。adb shell input keyevent KEYCODE_VOLUME_DOWN
– 音量减。adb shell input keyevent KEYCODE_MENU
– 菜单键(旧设备)。adb shell input keyevent KEYCODE_WAKEUP
– 唤醒设备。adb shell input keyevent KEYCODE_SLEEP
– 使设备进入睡眠。
- 查看所有Keycode常量
-
-
模拟触摸/滑动:
adb shell input tap x y # 在坐标(x, y)处点击 adb shell input swipe x1 y1 x2 y2 duration_ms # 从(x1,y1)滑动到(x2,y2),持续duration_ms毫秒
无线连接ADB (无需USB线)
- 确保设备和电脑在同一个Wi-Fi网络下。
- 先用USB线连接设备并确保
adb devices
能识别。 - 设置设备监听TCP/IP端口(通常5555):
adb tcpip 5555
- 断开USB线。
- 找到设备的Wi-Fi IP地址(在设备设置 -> 关于手机 -> 状态信息 或 使用
adb shell ip addr show wlan0
)。 - 使用IP地址连接设备:
adb connect device_ip_address:5555
(
adb connect 192.168.1.100:5555
) - 再次运行
adb devices
,应该能看到通过IP连接的设备。 - 断开无线连接:
adb disconnect device_ip_address:5555
或者重启设备后无线连接会失效,需要重新执行步骤2-6。
重要安全提示与最佳实践 (E-A-T重点)
- 来源可信: 只从官方渠道(developer.android.com)下载Android SDK Platform-Tools,避免使用来源不明的ADB工具包。
- USB调试授权: 仅在你信任的电脑上启用USB调试并勾选“始终允许”,在公共或不安全的电脑上切勿启用,不使用时,考虑在设备开发者选项中关闭USB调试。
- 谨慎执行Shell命令: 在
adb shell
中执行的命令(尤其是需要su
或root
权限的命令)具有强大的破坏力。除非你完全理解命令的作用和后果,否则不要执行! 错误的命令可能导致数据丢失、系统不稳定甚至设备变砖。 - 理解命令含义: 在使用任何ADB命令(特别是涉及文件删除
rm
、系统属性修改setprop
、分区操作等)之前,务必查阅官方文档或可靠资料,了解其确切功能。 - 备份重要数据: 在执行可能影响系统或数据的操作(如卸载系统应用、修改系统文件)前,务必备份设备上的重要数据。
- 关注权限: 许多ADB命令需要特定的权限才能工作,普通用户 () 和Root用户 () 的权限差异巨大,不要随意尝试获取Root权限,除非你了解风险并有明确需求。
- 更新工具: 定期检查并更新Android SDK Platform-Tools,以获取最新的功能、安全补丁和Bug修复。
ADB是一个功能极其强大的工具,为Android设备的深度管理、应用调试和自动化提供了无限可能,通过本文的介绍,你应该已经掌握了ADB的安装配置、连接验证以及最常用命令的使用方法,请始终牢记安全准则,负责任地使用ADB,随着实践经验的积累,你会发现ADB是解决Android设备各种疑难杂症、提升开发效率的得力助手。
引用说明:
- Android Developers官方文档 (ADB): https://developer.android.com/studio/command-line/adb – 最权威、最全面的ADB命令参考和指南来源。
- Android Open Source Project (AOSP) – ADB实现: https://android.googlesource.com/platform/packages/modules/adb/ – ADB的开源代码库(技术参考)。
- Android KeyEvent常量文档: [https://developer.android.com/reference/android/view
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7023.html