这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。ADB(Android Debug Bridge)调试工具,对于搞安卓开发、测试或者喜欢折腾手机、电视盒子的人来说,是绕不开的。它解决的核心问题,就是让你能在电脑上通过命令行,直接对安卓设备进行深度操作,比如安装卸载应用、传输文件、执行Shell命令、抓取日志,甚至是自动化测试。
很多人第一次接触ADB,要么是跟着教程刷机、装框架,要么是想在电脑上控制手机。但新手最容易卡住的地方,往往不是命令本身,而是环境配置、设备连接和权限问题。你可能会遇到“adb不是内部或外部命令”、“device not found”、“unauthorized”这些经典拦路虎。这篇文章不会只给你一个命令列表,而是会像刚踩完一遍坑一样,带你从零开始,把环境搭稳、连接打通,再聊聊怎么用这些命令组合出一些“好玩”的自动化操作。我会更建议把第一次测试拆成三步:环境配置、单设备连接验证、命令组合与实战。
下面按实际落地顺序拆一遍。
1. 先搞定环境:别让“不是内部命令”卡在第一步
很多人兴致勃勃打开命令行,输入adb,结果系统告诉你“不是内部或外部命令”,热情瞬间浇灭一半。这不是ADB的问题,是你的系统找不到这个可执行文件。
1.1 获取ADB工具包:选对版本,放对地方
ADB工具包通常包含三个核心文件:adb.exe(Windows)、AdbWinApi.dll、AdbWinUsbApi.dll。在Mac或Linux上则是adb可执行文件。
从哪里获取?
- 官方途径(推荐):下载完整的Android SDK Platform-Tools。这是最稳妥的方式,版本新且兼容性好。你可以去Android开发者官网找,或者使用一些包管理工具(如
scoopon Windows,brewon macOS)安装。 - 第三方整合包:网上有很多“ADB一键工具包”,对于只想快速使用的用户比较方便。但要注意来源安全,避免捆绑恶意软件。
版本选择:
- 系统架构:如果你的电脑是64位系统,优先选择64位版本。不过大多数32位版本在64位系统上也能运行。
- 设备兼容:一般新版本向下兼容。如果遇到老设备(特别是某些电视盒子)连接问题,可以尝试换用旧版本的ADB驱动或工具包。
存放位置: 不要放在路径很深的目录里,比如“下载”文件夹。我建议专门创建一个简单的目录,例如:
- Windows:
C:\adb - macOS/Linux:
~/adb
把解压出来的那几个核心文件直接放到这个目录里。接下来,就是要让系统在任何地方都能找到这个目录。
1.2 配置系统环境变量:一劳永逸的关键步骤
这是解决“不是内部命令”的根本方法。原理是告诉操作系统:“当你听到adb这个命令时,请去我指定的那个文件夹里找执行文件。”
Windows 配置步骤:
- 右键点击“此电脑”或“计算机”,选择“属性”。
- 点击“高级系统设置”。
- 在“高级”选项卡下,点击“环境变量”。
- 在下面的“系统变量”区域(如果只想当前用户用,选“用户变量”),找到并选中
Path变量,点击“编辑”。 - 点击“新建”,然后将你的ADB工具目录的完整路径(例如
C:\adb)添加进去。 - 点击“确定”保存所有窗口。
macOS / Linux 配置步骤:通常通过修改 shell 配置文件(如~/.bashrc,~/.zshrc)来实现。
- 打开终端。
- 使用文本编辑器打开配置文件,例如:
nano ~/.zshrc - 在文件末尾添加一行:
export PATH=$PATH:~/adb(请将~/adb替换为你的实际路径)。 - 按下
Ctrl+X,然后按Y确认保存,再按回车确认文件名。 - 让配置立即生效:执行
source ~/.zshrc。
如何验证配置成功?打开一个新的命令行窗口(重要!必须新开,让环境变量生效),输入:
adb version如果成功显示ADB的版本号(例如Android Debug Bridge version 1.0.41),恭喜你,环境配置成功了。如果还不行,检查路径是否拼写正确,是否在新窗口执行。
1.3 安装必要的驱动(主要是Windows)
对于大多数现代安卓手机,在开启USB调试后,Windows 10/11 通常能自动安装合适的驱动(称为 “Android ADB Interface” 或 “Google USB Driver”)。 但一些老设备、特定品牌的设备(如某些电视盒子、车载设备)或使用非标准接口的设备,可能需要手动安装驱动。
驱动问题典型症状:
adb devices列表里设备显示为unauthorized(已授权但驱动可能没问题)或根本不在列表里。- 设备管理器里看到设备带黄色感叹号,显示为“未知设备”或“ADB Interface”有问题。
解决方法:
- 安装通用驱动:下载并安装“Google USB Driver”(可通过Android Studio的SDK Manager获取)。
- 品牌官方驱动:去手机厂商官网下载对应的USB驱动(如华为HiSuite、小米助手、三星USB驱动等)。
- 手动更新驱动:在设备管理器中右键点击有问题的设备 -> “更新驱动程序” -> “浏览我的电脑以查找驱动程序” -> 手动定位到你下载的驱动文件夹。
注意:驱动安装成功后,设备管理器里应该能看到类似
Android Device->Android ADB Interface的条目。
2. 连接设备:从“Device Not Found”到“device”
环境好了,命令能认了,下一步就是把设备和电脑连上。这里花样最多,坑也最多。
2.1 开启设备的USB调试模式
这是必须的,相当于给设备开了一扇让ADB进来的“后门”。
在安卓手机上(不同品牌菜单位置略有差异):
- 进入“设置” -> “关于手机”。
- 连续点击“版本号”7次,直到出现“您已处于开发者模式”的提示。
- 返回设置,找到新出现的“开发者选项”或“系统与更新”->“开发者选项”。
- 在开发者选项里,找到并开启“USB调试”。
在电视或盒子上:方法更多样,也更棘手,因为很多厂商隐藏了入口。
- 设置菜单:在系统设置的“关于”或“设备信息”里,狂按遥控器方向键或版本号,有可能调出“开发者选项”,然后开启“ADB调试”。
- 工程模式:通过特定遥控器按键组合(如“上上下下左右左右”)进入工程模式,寻找ADB开关。
- 网络ADB:有些设备支持通过网络连接ADB,你需要先在设置里找到“网络ADB”或“无线调试”并开启,记下显示的IP地址和端口。
2.2 连接方式:USB vs. 网络/Wi-Fi
USB连接(最稳定,首选):
- 用数据线连接设备和电脑。
- 在设备上,当弹出“允许USB调试吗?”的对话框时,勾选“始终允许”,然后点击“确定”。这是解决
unauthorized的关键。 - 在电脑命令行输入:
如果一切正常,你会看到类似以下的输出:adb devicesList of devices attached xxxxxxxx devicedevice状态表示已授权并连接成功。如果是unauthorized,请检查设备屏幕是否点击了授权。
网络/Wi-Fi连接(适合无USB口或远程操作):前提:设备与电脑在同一局域网,并且你已经通过USB方式完成过一次初始授权。
- 先用USB连接并授权。
- 获取设备IP地址(通常在设置->关于->状态信息里)。
- 在命令行设置端口监听:
(5555是默认端口,可更改)adb tcpip 5555 - 拔掉USB线。
- 使用网络连接:
(例如:adb connect 设备IP地址:5555adb connect 192.168.1.100:5555) - 再次运行
adb devices,应该能看到设备通过IP地址连接。
注意:网络连接可能受防火墙、路由器设置影响,且速度不如USB。如果
adb connect失败,检查IP和端口,并确保设备网络ADB功能已开启(部分设备需单独开启“网络ADB调试”)。
2.3 疑难杂症排查顺序
当adb devices显示为空、offline或unauthorized时,按这个顺序排查:
- 检查数据线:有些线只能充电,不能传输数据。换一根确认支持数据传输的线。
- 检查USB端口:换一个电脑上的USB口试试,特别是台式机,优先使用机箱后部主板原生的USB口。
- 检查设备弹窗:手机/盒子屏幕上是否出现了“允许USB调试”的请求?务必点击“允许”。
- 检查驱动:在设备管理器中查看设备状态,有无黄色感叹号。
- 重启ADB服务:有时候ADB服务会卡住。
然后再执行adb kill-server adb start-serveradb devices。 - 检查设备ADB状态:在已授权的设备上,进入开发者选项,尝试关闭再打开“USB调试”。
- 换用不同版本的ADB工具:特别是对于老设备或电视盒子,新版本ADB可能不兼容。
- 查看设备日志:在命令行输入
adb logcat,看看连接过程中设备端是否有相关错误日志输出。
3. 核心命令实战:从基础操作到“好玩的东西”
连接稳定之后,才是玩转ADB的开始。命令很多,但掌握几个核心组合,就能实现大部分想法。
3.1 文件管理:传、删、看
- 推送文件到设备:
例如:adb push <本地文件路径> <设备目标路径>adb push C:\demo.apk /sdcard/Download/把电脑上的apk推到手机下载目录。 - 从设备拉取文件:
例如:adb pull <设备文件路径> [本地保存路径]adb pull /sdcard/DCIM/Camera/photo.jpg .把照片拉到当前目录。 - 查看设备文件列表:
例如:adb shell ls <目录路径>adb shell ls /sdcard/。 - 删除设备文件:
adb shell rm <文件路径>
注意:设备系统分区(如
/system)通常需要root权限才能写入。操作/sdcard/(内部存储)一般不需要。
3.2 应用管理:装、卸、清、冻
- 安装应用:
adb install <apk文件路径>-r参数覆盖安装,-d允许降级安装。 例如:adb install -r demo.apk。 - 卸载应用:
包名不是应用名,可以用adb uninstall <应用包名>adb shell pm list packages查看,或使用adb shell pm list packages | grep keyword搜索。 - 清除应用数据(相当于恢复出厂设置):
adb shell pm clear <应用包名> - 启用/禁用应用(无需root,但需要设备管理员权限或adb授权):
这可以用来“冻结”系统预装的无用软件,非常实用。adb shell pm disable-user <应用包名> # 禁用 adb shell pm enable <应用包名> # 启用
3.3 设备信息与Shell命令
- 进入交互式Shell:
之后你就可以像在Linux终端里一样操作设备了。输入adb shellexit退出。 - 执行单条Shell命令:
例如:adb shell <命令>adb shell getprop ro.product.model(获取设备型号)adb shell dumpsys battery(查看电池信息)adb shell top -n 1(查看实时进程,类似任务管理器)adb shell cat /proc/cpuinfo(查看CPU信息)adb shell wm size(查看屏幕分辨率)adb shell settings get global policy_control(查看某些系统策略)
3.4 输入模拟与屏幕操作
这是实现自动化的核心。
- 模拟按键:
例如:adb shell input keyevent <键值>KEYCODE_HOME(3): 主页键KEYCODE_BACK(4): 返回键KEYCODE_POWER(26): 电源键KEYCODE_VOLUME_UP(24): 音量+KEYCODE_ENTER(66): 回车 用法:adb shell input keyevent 3或adb shell input keyevent KEYCODE_HOME。
- 模拟触摸/滑动:
例如:adb shell input swipe <x1> <y1> <x2> <y2> [时长(ms)] adb shell input tap <x> <y>adb shell input swipe 500 1000 500 500 200从坐标(500,1000)滑动到(500,500),用时200毫秒。坐标原点在屏幕左上角。 - 模拟文本输入:
注意:不支持中文直接输入,且有些符号需要转义。adb shell input text "hello"
3.5 截图与录屏
- 截图:
可以合并成一条命令(使用shell管道):adb shell screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png .adb exec-out screencap -p > screenshot.png - 录屏:
默认录制最多180秒,按adb shell screenrecord /sdcard/demo.mp4Ctrl+C停止。录制参数可以设置分辨率、码率等。
4. 组合起来:打造你的“好玩的东西”
单独的命令只是工具,组合起来才能产生化学反应。下面举几个思路,你可以根据自己的需求扩展。
4.1 自动化日常任务(批处理脚本)
假设你每天上班第一件事是打开手机上的几个特定应用(微信、钉钉、邮箱)。你可以写一个.bat(Windows) 或.sh(macOS/Linux) 脚本:
@echo off REM Windows批处理示例:auto_start.bat echo 正在连接设备... adb devices echo 正在解锁屏幕(假设滑动解锁)... adb shell input swipe 300 1000 300 300 500 echo 正在打开微信... adb shell am start -n com.tencent.mm/.ui.LauncherUI timeout /t 2 echo 正在打开钉钉... adb shell am start -n com.alibaba.android.rimet/.biz.LaunchHomeActivity timeout /t 2 echo 正在打开邮箱... adb shell am start -n com.android.email/.activity.Welcome echo 任务完成! pause解释:
am start -n <包名/活动名>是启动应用的核心命令。活动名通常需要查找,一个简单的方法是:打开应用,然后执行adb shell dumpsys window | findstr mCurrentFocus(Windows) 或adb shell dumpsys window | grep mCurrentFocus(macOS/Linux) 来查看当前最上层活动的名称。timeout /t 2(Windows) 或sleep 2(macOS/Linux) 是等待2秒,给应用启动留出时间。
4.2 批量安装/卸载应用
如果你是个应用测试员,或者需要给多台设备部署同一批应用:
REM 批量安装当前目录下所有apk for %%i in (*.apk) do ( echo 正在安装 %%i... adb install -r "%%i" if !errorlevel! equ 0 ( echo %%i 安装成功。 ) else ( echo %%i 安装失败! ) )4.3 简易的“远程控制器”
结合网络ADB,你可以在电脑上写一个简单的脚本,用键盘控制家里的电视盒子(假设已通过网络ADB连接):
REM 简单示例:用键盘方向键控制盒子 :loop choice /c wasdqe /n /m "W上 A左 S下 D右 E确认 Q返回:" if errorlevel 6 goto key_q if errorlevel 5 goto key_e if errorlevel 4 goto key_d if errorlevel 3 goto key_s if errorlevel 2 goto key_a if errorlevel 1 goto key_w :key_w adb shell input keyevent KEYCODE_DPAD_UP goto loop :key_a adb shell input keyevent KEYCODE_DPAD_LEFT goto loop :key_s adb shell input keyevent KEYCODE_DPAD_DOWN goto loop :key_d adb shell input keyevent KEYCODE_DPAD_RIGHT goto loop :key_e adb shell input keyevent KEYCODE_ENTER goto loop :key_q adb shell input keyevent KEYCODE_BACK goto loop4.4 监控与日志抓取
开发调试时非常有用。
- 过滤特定标签的日志:
adb logcat -s “MyAppTag” - 将日志输出到文件:
adb logcat -d > log.txt-d参数表示抓取当前缓冲区日志然后退出。 - 实时查看CPU占用(需要设备支持
top命令):
这会每秒刷新一次进程信息。adb shell top -d 1
4.5 提取系统文件(需Root或特定权限)
警告:此操作有风险,可能破坏系统,仅适用于已获取Root权限的设备或用于学习研究。例如,提取 boot.img(常用于制作Magisk模块或备份):
adb shell su dd if=/dev/block/platform/soc/by-name/boot of=/sdcard/boot.img exit exit adb pull /sdcard/boot.img .重要:块设备路径(/dev/block/platform/...)因设备而异,切勿直接照抄。错误操作可能导致设备变砖。
5. 高级技巧与避坑指南
当基础玩转后,你会遇到更具体的问题和需求。
5.1 同时控制多台设备
如果你连接了多台设备,执行命令时需要指定设备。
- 先用
adb devices获取设备序列号。 - 在命令中加入
-s <序列号>参数。adb -s xxxxxxxx shell input keyevent KEYCODE_HOME - 或者,设置一个环境变量
ANDROID_SERIAL来指定默认设备。
5.2 处理“Read-only file system”错误
在尝试向/system等分区写入文件时,可能会遇到这个错误。即使有root权限,也需要先重新挂载分区为可写。
adb shell su mount -o rw,remount /system操作完成后,建议改回只读以防误操作:
mount -o ro,remount /system5.3 无线调试(Android 11+)
新版本安卓提供了更稳定的无线调试方式,无需先通过USB。
- 在开发者选项中找到“无线调试”,开启。
- 点击“使用配对码配对设备”。
- 在电脑上使用:
例如:adb pair <设备Wi-Fi配对IP:端口> <配对码>adb pair 192.168.1.100:12345 123456 - 配对成功后,再使用
adb connect <设备IP:端口>连接。
5.4 常见错误与解决思路
error: device not found:- 检查USB连接、驱动、数据线。
- 检查设备是否授权USB调试。
- 运行
adb kill-server && adb start-server。 - 换USB口,换电脑。
adb: unauthorized:- 检查设备屏幕,点击授权对话框。
- 在开发者选项里,撤销USB调试授权,然后重新连接。
no such file or directory(如材料中提到的/data/adb/modules/.../script4.sh):- 文件路径确实不存在。检查路径拼写。
- 该路径可能需要root权限才能访问。先执行
adb shell然后su提权再尝试。 - 模块可能未正确安装或启用。
inspect白屏或工具无响应:- 某些图形化ADB工具(如
inspect)依赖特定环境或权限。尝试以管理员身份运行命令行或工具。 - 可能是ADB版本与工具不兼容。尝试更新或回退ADB版本。
- 某些图形化ADB工具(如
adb sideload失败:- 通常是在设备Recovery模式下使用。确保设备已进入正确的Recovery模式(如TWRP)。
- 检查刷机包(ZIP文件)是否完整、兼容。
- 在Recovery模式下,可能需要先挂载
/system等分区。
5.5 安全与风险提示
- 授权谨慎:只在可信的电脑上点击“允许USB调试”。一旦授权,这台电脑对你的设备有很高的控制权。
- 操作谨慎:特别是
rm、dd、pm uninstall、pm disable等命令,执行前务必确认目标。误删系统文件或禁用核心应用可能导致设备无法启动。 - 备份重要数据:在进行任何可能修改系统或数据的操作前,备份个人数据。
- 了解设备状态:操作电视盒子、老旧手机时,先查清楚其芯片方案、系统版本,寻找对应的社区教程,不要盲目执行网上找到的命令。
ADB的强大在于它将图形界面背后的底层通道开放了出来。从最简单的文件传输,到复杂的自动化脚本和系统调试,它提供了一个统一的桥梁。我个人更建议先把单设备连接和基础文件、应用管理命令玩熟,理解每个命令执行后设备端的实际反应。当你能稳定地让设备听你指挥时,那些“好玩的东西”自然就会从你的需求里生长出来——可能是自动打卡脚本,可能是电视盒子遥控器,也可能是应用测试流水线。这个工具真正落地时,最该盯住的不是命令列表,而是连接稳定性、操作准确性和对设备状态的清醒认知。