简介:一套面向 Android 开发者与设备维护者的 ADB 工具包,集成 adb、fastboot 等官方命令行组件,围绕安卓调试桥的客户端-服务器-守护进程架构,可应对设备连接、文件传输、Shell 命令执行、日志采集、模拟输入以及锁屏密码清除等常见调试与解锁需求,适合应用开发、刷机解锁、自动化测试与系统维护等场景。压缩包共 23 个文件,以可执行程序(exe)、批处理脚本(bat)、动态链接库(dll)为主,并附有文本说明、配置属性与镜像文件;其中 exe 提供 adb、fastboot 等核心工具,bat 封装常用命令组合,dll 保证 Windows 运行环境,整体 1.88MB,轻量便携,解压即可使用。已有 19038 人学习下载,覆盖从入门到进阶的 Android 调试人群。工具包提供完整的 ADB 命令链与实用脚本,可快速部署应用到设备、抓取 logcat 日志分析崩溃原因,也能通过模拟点击滑动执行自动化测试;在忘记锁屏密码时,还可借助恢复模式配合指令清除用户数据,是调试与应急处理的好帮手。
1. adb工具包到底解决什么问题:从“连不上”到“一条命令搞定”
做安卓调试的人手里多少都得有一套 adb工具包。它是一套命令行工具集——把 Google 官方 platform-tools、各品牌 USB 驱动和常用脚本打进一个压缩包,解压配置后就能用 adb 命令直接指挥安卓设备,解锁屏幕、抓崩溃日志、截图、装应用都走这一条路。adb 全称 Android Debug Bridge,中文圈管它叫调试桥,工具包干的事就是把这座桥的桥墩先铺好。
它的价值在适配:老机器、新机型、车机、盒子,驱动和授权方式各不相同,工具包帮你把“缺哪个补哪个”的步骤提前做完。适合刷机爱好者、APP 测试开发、修车机和旧电视的人,以及想批量管理多台安卓设备的人。下面从目录结构说起,把环境、命令和踩坑点一次讲清。
2. 拆开这个 adb 工具包:目录结构、版本选择与运行原理
拿到压缩包先别急着双击 adb.exe。我见过不少把 fastboot 当 adb 用的人,设备进不了系统才想起这俩不是一回事。先花两分钟看清目录,后面排错能省一半时间。
2.1 platform-tools 里的角色文件:adb.exe、fastboot.exe 与两个 DLL
一份标准 adb 工具包解压后,核心是 platform-tools 目录,外加一个驱动目录和几个封装好的批处理脚本。里面的东西各管一摊:
| 文件/目录 | 职责 |
|---|---|
| adb.exe | 调试桥主程序,跑设备端命令、文件传输、日志抓取 |
| fastboot.exe | 刷机协议工具,bootloader 阶段刷分区、解锁都靠它 |
| AdbWinApi.dll | Windows 下 adb 与 USB 栈的通信层,Win7 以上系统必需 |
| AdbWinUsbApi.dll | 老式 USB 驱动兼容层,部分古董设备驱动要带上它 |
| drivers/ | 通用 ADB 驱动或厂商驱动,装“感叹号”设备时用 |
| *.bat / *.sh | 一键安装、抓日志、截图等日常操作的封装 |
这里要理解一个关键区别:adb 和 fastboot 不是同一个协议。adb 是 client-server-daemon 结构,命令先打到电脑后台常驻的 server(默认监听 5037 端口),server 再通过 USB 或 TCP 连到设备里的 adbd 守护进程;fastboot 则是设备在 bootloader 阶段运行的协议,系统都没起来它反而能工作。所以刷机刷到一半机器变砖,fastboot 还在,而 adb 已经没反应了,这是正常的,不是工具包坏了。
DLL 文件容易被忽略,但缺了任何一个,adb.exe 双击就会报“找不到 AdbWinApi.dll”。x86 和 x64 的 DLL 不能混用,工具包里一般按 64 位主版本配好,装完直接能用。如果从网上单独下 exe 而不带这两个 DLL,命令会起不来,这也是“工具包”和“单个 adb.exe”的本质区别。
注意:如果 adb 命令全部卡住,或提示端口被占,先怀疑 server 状态,不用重装任何东西,直接看第 5 章的排查步骤。
2.2 版本选择与环境变量:为什么 64 位版本和纯英文路径更省心
工具包里的 adb 版本不是越新越好。新版本平台工具对 Android 11 以上设备的 RSA 授权处理更友好,但个别老车机、老盒子的固件反而和新版不兼容,fastboot 会报 unknown command。我的习惯是工具包里同时放两个版本:一个主用的 64 位新版,一个兼容旧设备的旧版,目录分开,按场景切换。Android 6 以下的设备、大厂定制安卓的车机、海信这类机顶盒,旧版本往往比新版本更稳。
解压位置建议直接放 C:\adb,别进带空格的“Program Files”,也别放中文路径。工具包里的脚本是按纯英文路径写的,路径带空格或中文时,批处理解析会翻车。然后配置环境变量:
# 在 PowerShell 里把 C:\adb 加进当前用户的 PATH [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\adb", "User") # 新开一个终端窗口验证 adb version adb devices逻辑说明:SetEnvironmentVariable 的第三个参数传 "User",只改当前用户的环境变量,不需要管理员权限;如果传 "Machine",写系统级 PATH 时会被 UAC 拦住,造成“明明加了却不生效”的假象。adb version 输出里能看到 build 版本号,如果低于 1.0.31,连新设备会反复 unauthorized,直接换工具包里的新版即可。
参数说明:adb devices不带参数只显示序列号和状态,日常排查够用;想看更多信息加-l,会补出设备型号、usb 端口字段。后面所有命令都用adb -s 序列号指名道姓指定设备,多设备插着时不会串台。配置完 PATH 后,终端里敲where adb(Windows)能看到解析到的路径,如果指向了系统残留的旧版本,把 PATH 里靠前的旧路径清掉再试。
3. 第一次连接设备:环境配置、授权流程与设备状态判断
很多新手卡在“命令我懂,设备就是连不上”。这一章走完整链路:手机端打开入口,电脑端装对驱动,最后用 adb devices 确认设备状态。Win11 新装系统第一次插设备尤其要注意驱动,系统自带的通用驱动经常被更新覆盖成错误版本,后面第 5 章有专门的处理。
3.1 手机端开启 USB 调试:开发者选项与各品牌 ROM 的隐藏项
通用入口是设置→关于手机→连点“版本号”7 次,然后设置里出现开发者选项,打开“USB 调试”。但各品牌 ROM 有各自的脾气:
MIUI 要在开发者选项里同时打开“USB 安装”,否则 adb install 会报 INSTALL_FAILED_USER_RESTRICTED;OPPO、realme 部分机型需要登录账号才能打开 USB 调试开关;iQOO 系在开发者选项里还有一层“USB 调试(安全设置)”,不开的话授权弹窗被吞;华为、荣耀老机型默认开“USB 调试保护”,弹窗同样出不来。电视类设备比如小米电视,路径是设置→关于→连续点击版本号,只有部分系统版本开放 adb 端口,装应用前先确认端口通不通。
插数据线时,手机上要选“文件传输(MTP)”而不是“仅充电”。这是最容易被忽略的一步——选仅充电时,adbd 可能根本没被激活,电脑端自然什么都看不到。开发者选项打开后建议顺手把“屏幕不休眠”也开了,否则调试过程中黑屏,后面授权弹窗又会被吞掉。
3.2 电脑端驱动与授权:从 unauthorized 到 device 的完整链路
插线后观察电脑设备管理器。如果出现带黄色感叹号的设备,说明驱动不对,右键→更新驱动→浏览我的电脑→指向工具包的 drivers 目录,勾选“包括子文件夹”强制安装。装完拔插一次数据线,这一步不做的话,后面 adb devices 会一直显示 offline。
然后跑一遍初始化命令:
adb kill-server # 杀掉可能残留的旧 server,保证从干净状态开始 adb start-server # 重新启动 adb server,监听 5037 端口 adb devices -l # 列出设备:序列号、状态、型号信息逻辑说明:这三条命令是每次排错的起手式。kill-server 把后台残留的 server 清掉,避免端口和指纹状态脏掉;start-server 之后设备重新握手;devices -l 输出的状态列是命门——unauthorized 表示手机端没确认过 RSA 指纹,device 表示已授权可用,offline 表示驱动或 USB 通道有问题。
授权流程是:首次连接时,电脑端 adb server 会把本机公钥推给设备,手机屏幕上弹出“允许 USB 调试吗”的对话框,勾选“始终允许”并确认后,设备端才保存这份指纹,状态才变成 device。弹窗没出来,或者勾了始终允许还是 unauthorized,就是第 5 章第一个坑。另外注意,授权框只在首次连接或电脑端指纹变化时才弹,不是每次插线都弹。
提示:品牌 ROM 的授权弹窗可能藏在后台,或要求屏幕保持亮屏才显示,插线前先让手机保持解锁状态。
4. 高频操作实战:解锁、抓日志、截图与屏幕方向的命令组合
连接稳定之后,工具包才真正开始干活。这一章是使用频率最高的几组命令:解锁、抓日志、截图、改屏幕方向。每个都配了参数说明,直接抄就行。
4.1 解锁的两层含义:屏幕唤醒与 bootloader 解锁的分界线
“adb 解锁”在圈里有两层意思。日常说的解锁是解除锁屏——自动化测试、远程调试时屏幕锁着没法操作。先亮屏,再干掉锁屏界面:
# 点亮屏幕,KEYCODE_WAKEUP 的键值是 224 adb shell input keyevent KEYCODE_WAKEUP # 亮屏后尝试直接移除锁屏界面 adb shell wm dismiss-keyguard # 部分 ROM 不吃 dismiss-keyguard,退一步用菜单键模拟滑开 adb shell input keyevent 82 # 图案锁/密码锁兜底:模拟手指上滑 adb shell input swipe 540 1200 540 400 200逻辑说明:input keyevent 是往设备注入按键事件。KEYCODE_WAKEUP 只负责唤醒屏幕不解锁;wm dismiss-keyguard 是让 Window Manager 直接取消锁屏显示,干净利落,但需要 adb 有足够权限;keyevent 82(菜单键)在部分定制 ROM 的锁屏上等效于滑动解锁,是低权限下的妥协方案。最后那行 input swipe 是模拟手指从坐标 540,1200 滑到 540,400,耗时 200ms,主要对付需要上滑解锁的锁屏。我一般先试 dismiss-keyguard,不行再按顺序退化。
另一层“解锁”是 bootloader 解锁,刷机之前绕不开。工具包里的 fastboot.exe 就是干这个的,命令是fastboot flashing unlock(新机型)或fastboot oem unlock(老机型)。执行前确认已经进了 bootloader(关机后长按音量下+电源),并且想清楚——这一步会清空设备全部数据,部分机型解锁后部分功能永久失效。
注意:fastboot 解锁不是 adb 命令,是 fastboot 协议命令,别在系统里直接敲,否则只会得到 waiting for device。
4.2 logcat 抓取日志:过滤级别、保存文件与崩溃定位
崩溃、ANR、卡顿这类问题,最直接的证据在 logcat。抓日志的基本姿势是先清空旧日志,再按级别或按进程过滤:
# 清空设备端日志缓冲区,保证接下来抓到的是新日志 adb logcat -c # 抓全局 Warning 以上日志,带线程和时间信息,存到电脑 adb logcat -v threadtime *:W > app_crash.log 2>&1 # 只看崩溃核心:AndroidRuntime 的 Error 级别堆栈 adb logcat -s AndroidRuntime:E -v threadtime # 按 pid 过滤(pid 先通过 pidof 拿到) adb logcat --pid=$(adb shell pidof com.example.app) -v threadtime逻辑说明:-v threadtime控制输出格式,包含线程 ID 和时间戳,定位问题少很多猜测;*:W是全局过滤,W 以上包含 Warn 和 Error,日常排查够用;-s AndroidRuntime:E是 silent 模式的简写,只输出指定 tag 的指定级别,App 崩了几乎都会在 AndroidRuntime 里留堆栈。按 pid 过滤适合只盯某个 App 的场景,配合复现操作可以快速定位崩溃类。
参数说明:重定向> app_crash.log 2>&1不能省,不重定向日志在终端里刷得看不清,2>&1 是把 stderr 也收进文件,否则部分错误输出会漏掉。复现崩溃前先用adb shell am force-stop 包名把应用杀掉,再冷启动一次,堆栈信息最干净。这个场景下“关闭后台运行程序”的命令也是同一个:想停掉任何后台进程,am force-stop 是首选,比 pm disable 温和且不需要 root。
4.3 截图与屏幕方向:screencap、wm 的参数清单
截图和屏幕方向是测试适配时最高频的操作。截图注意用 exec-out 而不是 shell 重定向:
# 指定设备截图并保存到电脑当前目录(二进制安全通道) adb -s 序列号 exec-out screencap -p > current_screen.png # 锁定横屏(参数范围 0~3,见下表) adb shell settings put system user_rotation 1 # 恢复竖屏 adb shell settings put system user_rotation 0 # 临时改分辨率和密度,模拟不同屏幕参数 adb shell wm size 1080x1920 adb shell wm density 440 # 测试完还原 adb shell wm size reset adb shell wm density reset逻辑说明:exec-out 走的是二进制输出通道,不会有终端转码把 PNG 内容破坏;如果用adb shell screencap -p > a.png这种写法,Windows 终端会把部分字节当控制字符吞掉,出来的图经常损坏。wm size 和 wm density 是全局修改,改完所有应用都会受影响,测完必须用 reset 还原,否则后续测试数据全被污染。多设备场景下,-s 参数必须放在 adb 后面、子命令前面,顺序错了会报错。
user_rotation 参数表:
| 值 | 屏幕方向 |
|---|---|
| 0 | 竖屏(默认) |
| 1 | 横屏(顺时针转 90°) |
| 2 | 反向竖屏(倒过来) |
| 3 | 反向横屏 |
5. 避坑与常见问题:授权异常、驱动冲突与车机盒子的特殊处理
这一章是实战里最值钱的。以下每一条都是我和同行用实际设备换回来的血泪经验,按“现象→原因→解决”写,直接对照处理。
5.1 unauthorized 反复出现:RSA 指纹串台与授权弹窗被吞
现象:adb devices 里设备一直显示 unauthorized,手机端死活不弹“允许 USB 调试吗”的对话框。
原因:两种情况最常见。一是电脑端 RSA 指纹文件损坏或被清理工具删过,和设备端保存的指纹对不上;二是手机 ROM 开了“USB 调试保护”或同类拦截,弹窗被系统直接吞掉。还有一种隐蔽场景:多台电脑轮流插同一台设备,设备端记录的指纹列表满了,新电脑的指纹进不去。
解决:先删掉电脑端指纹,让 server 重新生成一份:
# 备份并移除本地 RSA 指纹文件(Windows 默认在用户目录下) move "%USERPROFILE%\.android\adbkey" "%USERPROFILE%\.android\adbkey.bak" move "%USERPROFILE%\.android\adbkey.pub" "%USERPROFILE%\.android\adbkey.pub.bak" # 重启 adb server,强制生成新密钥并重新握手 adb kill-server adb start-server adb devices逻辑说明:move 做的是备份而不是直接删,后悔药留着;杀掉 server 重启后,电脑端会生成新的密钥对,手机端再次弹出授权框。如果还是不弹,去开发者选项里关掉“USB 调试保护”,华为荣耀系还要检查“USB 配置”是不是停在“仅充电”。多设备同时插着时,弹窗容易串台,建议 debug 时只插一台设备,确认授权完成后再插第二台。
5.2 车机和机顶盒:没有开发者选项的设备怎么进 adb
现象:吉利车机想强制进入 adb 模式却摸不到入口,海信机顶盒的 adb 开关要算码,老款创维电视连续点击版本号也没反应。
原因:这类设备不走标准安卓 UI,开发者选项入口被厂商隐藏。车机要进工程模式才有 adb 开关;海信部分机顶盒的 adb 开关要用按 MAC 地址计算的密码才能打开,而且算码工具必须匹配固件版本,跨版本算出的密码大概率是错的。
解决:思路是“先开隐藏入口,再走局域网连接”。车机一般在设置→系统信息里连续点软件版本号,或者按工程密码进入;机顶盒则是在拨号界面敲对应代码,配合算码工具生成当日密码。入口打开后,让设备和电脑连同一个局域网,用网络 adb 连接:
# 局域网方式连接设备,5555 是网络 adb 默认端口 adb connect 192.168.1.100:5555 # 检查连接结果 adb devices参数说明:adb connect 后面跟 IP:端口,端口不对会一直提示 unable to connect;部分盒子把端口改成了非默认值,连不上先确认盒子的实际端口,而不是反复重试同一个地址。这类设备的授权逻辑和手机不一样,有的根本不弹授权框,首次连上后重启设备再看状态变成 device,这是正常的,不是故障。另外,设备端 adb 开关如果每次断电都要重新打开,那是固件设计如此,不是你的操作问题。
5.3 端口占用、驱动感叹号与熄屏断连:三个高频翻车点
现象 1:原来正常的 adb 突然全部卡住,报 cannot bind 或找不到设备。
原因:5037 端口被别的工具占了。最常见的是 scrcpy、各种手机助手,或者上一个没退干净的 adb server。
解决:先杀后查,按进程 ID 处理:
adb kill-server netstat -ano | findstr :5037 # 找出占用 5037 的 PID taskkill /PID 12345 /F # 强杀对应进程,PID 以 netstat 输出为准 adb start-server逻辑说明:netstat 输出里最后一列就是进程 ID,taskkill 前先确认进程名,别误杀系统进程。杀完再启动 server,问题解除。这套流程对多数“adb 突然不听话”都有效,先怀疑端口,别急着重装驱动。
现象 2:设备管理器里出现带黄色感叹号的 ADB Interface,adb devices 时有时无。
原因:Windows 更新或驱动卸载后,系统装上了错误的 WinUSB 驱动,Win11 上尤其频繁。
解决:右键设备→更新驱动→浏览我的电脑→指向工具包 drivers 目录,勾选“包括子文件夹”强制重装。装完拔插数据线,状态基本就稳了。别用设备管理器里的“自动搜索”,它只会再次装回同一个错误驱动。
现象 3:手机放一会儿,设备就变成 offline,充电也连不回。
原因:息屏后进入 USB 休眠,或者系统省电策略把 adb 通道挂起了。
解决:开发者选项里打开“屏幕不休眠”或“保持唤醒”,部分 ROM 还要到电池优化里把 USB 调试相关项设为“不限制”。测试挂机过夜的场景,这一步不做,第二天起来设备大概率已经是 offline。
6. 进阶:把常用操作写成批处理脚本,让 adb 变成顺手工具
6.1 一个批处理把日常操作串起来
高频操作单独敲没问题,但测试前总得重复解锁、清日志、截图,每回敲一遍太亏。我习惯写一个 routine.bat,把环境准备串成一条命令:
@echo off rem 用法:routine.bat 设备序列号,多设备时靠 -s 指定 set DEV=-s %1 adb %DEV% shell input keyevent KEYCODE_WAKEUP adb %DEV% shell wm dismiss-keyguard adb %DEV% exec-out screencap -p > %date:~0,4%%date:~5,2%%date:~8,2%_screen.png adb %DEV% logcat -c echo 环境就绪逻辑说明:%1 是传入的设备序列号,-s 参数保证多设备时不串台;%date:~0,4% 之类是从系统日期里截取年、月、日,拼进文件名避免截图互相覆盖;整段脚本把亮屏、解锁、截图、清日志串在一起,测试开始前一条命令就走完环境准备。
6.2 两个 settings put 实战:锁定方向与 WiFi 感叹号
settings put 是往系统全局配置里写值,适合做持久化修改,效果有时候挺玄学,但这两个是我验证过多次的:
# 关闭网络连接检测,消除 WiFi 感叹号(部分系统重启后恢复) adb shell settings put global captive_portal_detection_enabled 0 # 或者把检测服务器换成可达地址,也是常见解法 adb shell settings put global captive_portal_server connectivitycheck.gstatic.com参数说明:captive_portal_detection_enabled 为 0 表示关闭检测;captive_portal_server 是换检测源。这类修改写进系统数据库,重启一般还在,少数 ROM 会重置,跑完看实际效果就行。用来消除感叹号只是其中一种用法,同样的机制还可以调屏幕超时、默认输入法这类全局配置。
从那以后我每次连新设备都强制走一遍:先看设备管理器里驱动有没有感叹号,再 adb devices 确认状态,最后抓一段 logcat 验证通道。这套流程帮我避开了八成以上的翻车。这套 adb 工具包我已经整理好,直接下载解压就能用。希望帮到你。
本文还有配套的精品资源,点击获取