简介:platform-tools-latest-windows.zip 是面向 Android 应用开发与调试人员的 Windows 平台工具集合,解压后得到 platform-tools 目录,内含 adb、fastboot 等核心命令行工具,可用于设备连接、应用安装调试、系统刷写与分区操作,适合需要保持工具链最新、兼顾新系统兼容性的开发者使用。压缩包共 14 个文件,以 8 个 exe 可执行程序为主,辅以 3 个 dll 动态链接库、1 个 txt 说明、1 个 conf 配置和 1 个 properties 属性文件,整体约 6.81MB,体积轻量、解压即用。目前已有 748 人学习下载,说明该版本在开发者群体中具备一定参考价值。通过这份资源,读者可一次性获取最新版调试工具集,省去逐项下载的麻烦,并借助其中的说明与配置文件快速完成环境部署与版本核对,为日常开发、真机调试和刷机排错提供稳定支撑。
1. 别把 platform-tools 只当 ADB 压缩包:Windows 端 15 分钟落地清单
很多人第一次拿到platform-tools-latest-windows.zip,第一反应是「这不就是刷机用的 ADB 吗」,解压完把文件夹往桌面一扔,命令行里敲adb提示不是内部或外部命令,然后就卡住了。实际上这个压缩包是 Android SDK 里最轻量的一块独立工具集,里面装着adb、fastboot、sqlite3、etc1tool、dmtracedump等一批命令行程序,Windows 端做安卓调试、日志抓取、设备解锁、批量装机、自动化测试脚本,基本都靠它。它不需要装 Android Studio,不需要配 JDK,解压即用,这也是它常年挂在下载榜前列的原因。适合谁?做移动端测试的、搞逆向取证的、写自动化脚本的、还有偶尔要救砖的运维。这篇不聊虚的,从解压路径、环境变量、驱动、端口占用一路讲到批量脚本,把能踩的坑一次说清。
2. 解压与目录结构:为什么不能直接双击 adb.exe
2.1 压缩包里到底有什么
把 zip 解压出来,你会看到一个platform-tools文件夹,里面核心文件大致是这些:
| 文件名 | 作用 | 是否常用 |
|---|---|---|
| adb.exe | 设备调试桥,连手机、传文件、跑 shell | 高频 |
| AdbWinApi.dll | adb 依赖的动态库,缺了直接报错 | 必须保留 |
| AdbWinUsbApi.dll | USB 通信底层库 | 必须保留 |
| fastboot.exe | 线刷模式刷分区 | 中频 |
| sqlite3.exe | 直接读安卓应用数据库 | 中频 |
| etc1tool.exe | 纹理压缩格式转换 | 低频 |
| dmtracedump.exe | 解析 trace 文件 | 低频 |
| source.properties | 版本标记文件 | 查看版本用 |
注意AdbWinApi.dll和AdbWinUsbApi.dll这两个文件,很多人解压后只把adb.exe单独拷到C:\Windows\System32,结果一运行就报「找不到 AdbWinApi.dll」。原因是 adb 启动时要加载同目录下的这两个库,单独挪走 exe 就断了依赖。常见做法是整个platform-tools文件夹一起放到固定路径,比如D:\dev\platform-tools,后续所有操作都基于这个目录。
2.2 解压路径的三个硬性要求
路径这件事看着小,翻车率极高。我一般会强制三条:
第一,路径里不要有中文和空格。C:\Users\张三\桌面\platform-tools这种路径,adb 在某些子命令下会解析失败,尤其是adb push带空格文件名时。第二,不要放在需要管理员权限才能写的目录,比如C:\Program Files,否则 adb 启动 server 时写日志会失败。第三,路径尽量短,深层嵌套在某些脚本调用里会触发 Windows 260 字符路径限制。
推荐直接放D:\platform-tools或C:\platform-tools。解压工具用 Windows 自带的就行,右键「全部解压缩」,不要用某些第三方压缩软件直接「解压到当前文件夹」导致多套一层同名目录。
2.3 验证解压是否完整
解压完先别急着配环境变量,进目录开一个 cmd 验证:
cd /d D:\platform-tools adb version正常会输出类似:
Android Debug Bridge version 1.0.41 Version 35.0.2-android-tools Installed as D:\platform-tools\adb.exe如果报「不是内部或外部命令」,说明你当前目录不对或者文件没解压全。如果报缺 dll,回去检查那两个 AdbWin*.dll 是否和 adb.exe 在同一层。adb version能跑通,才说明这个包是完整的,再往下配环境变量才有意义。
3. 环境变量与驱动:让 adb 在任意目录可用
3.1 配置 PATH 的正确姿势
图形界面操作:Win 键搜「环境变量」→ 编辑系统环境变量 → 环境变量 → 在「系统变量」里找到 Path → 编辑 → 新建 → 填入D:\platform-tools→ 一路确定。注意是加到 Path 里,不是新建一个变量名。加完必须重开 cmd 窗口,老窗口读的是旧环境。
命令行方式(管理员权限 cmd):
setx /M PATH "%PATH%;D:\platform-tools"setx会把变量持久化写入注册表,/M表示系统级。这条命令有个坑:如果原 PATH 超过 1024 字符,setx会截断,导致其他软件路径丢失。所以更稳的做法还是图形界面手动加,或者先echo %PATH%备份一份。
配完验证:
adb version在任意目录都能输出,说明 PATH 生效。
3.2 驱动问题:设备管理器里的黄色感叹号
Windows 10/11 对大部分安卓机自带 ADB 驱动,但国产定制 ROM 和部分平板经常识别不了。插上手机开 USB 调试后,去设备管理器看,如果「Android Phone」或「其他设备」下面有黄色感叹号,就是驱动没装。
解决路径:右键该设备 → 更新驱动程序 → 浏览我的电脑 → 让我从列表中选取 → 选「Android ADB Interface」。如果列表里没有,需要去手机厂商官网下对应 USB 驱动,或者用 Google 官方的 usb_driver。装完adb devices应该能看到设备序列号。
3.3 授权与设备列表
第一次连接,手机会弹「允许 USB 调试吗」,勾选「一律允许」再确定。如果没弹窗,执行:
adb kill-server adb start-server adb devices正常输出:
List of devices attached ABCD1234 device如果显示unauthorized,说明授权没通过,去手机开发者选项里「撤销 USB 调试授权」,重新插拔。如果显示offline,通常是 adb 版本和设备不匹配,或者数据线只供电不传数据,换根线试试。如果列表为空,先确认 USB 调试开了、驱动装了、线是数据线,这三样排除完再怀疑别的。
4. 高频命令与批量脚本:把重复操作压成一行
4.1 日常调试命令速查
装应用、抓日志、传文件这几件事占日常 80% 的操作:
adb install -r app.apk # -r 覆盖安装,保留数据 adb install -t app.apk # -t 允许测试包 adb uninstall com.example.app # 卸载,包名不是 apk 名 adb logcat -c # 清空日志缓冲 adb logcat -v time > log.txt # 带时间戳输出到文件 adb push local.txt /sdcard/ # 电脑传到手机 adb pull /sdcard/remote.txt . # 手机拉到电脑当前目录 adb shell pm list packages # 列出所有包名 adb shell dumpsys battery # 查看电池状态adb install报INSTALL_FAILED_ALREADY_EXISTS就加-r;报INSTALL_FAILED_TEST_ONLY就加-t;报INSTALL_FAILED_INSUFFICIENT_STORAGE是手机空间不够,跟电脑无关。logcat输出量巨大,建议配合过滤:
adb logcat -v time *:E > err.txt # 只抓 Error 级别 adb logcat -s TAGNAME # 只看指定 TAG4.2 批量装机脚本
测试岗经常要往几十台设备装同一个包,一台台敲不现实。写个 bat:
@echo off set APK=%~1 for /f "skip=1 tokens=1" %%i in ('adb devices') do ( if not "%%i"=="" ( echo Installing to %%i ... adb -s %%i install -r "%APK%" ) ) pause逻辑说明:adb devices输出第一行是List of devices attached,用skip=1跳过;tokens=1取第一列即序列号;-s %%i指定目标设备,多设备时必须带,否则 adb 会报more than one device。参数%APK%是脚本第一个入参,调用时install.bat D:\app.apk即可。这个脚本的边界是设备序列号不能为空行,所以加了if not "%%i"==""判断。
4.3 端口占用与 server 重启
adb 默认监听 5037 端口。如果这个端口被别的程序占了,adb start-server会失败,报could not install *smartsocket* listener。排查:
netstat -ano | findstr 5037找到 PID 后去任务管理器结束对应进程,或者直接:
adb kill-server adb start-server如果还是不行,说明有别的 adb 版本在跑(比如某模拟器自带的 adb),把那个进程杀掉再重启。多版本 adb 冲突是高频坑,后面单独讲。
5. 避坑与排查:adb 用不起来先看这五条
5.1 现象:adb devices 列表为空
原因:USB 调试没开、驱动没装、线只供电、或者手机弹窗没点允许。解决:按顺序排查——开发者选项里确认 USB 调试开关是开的;设备管理器看有没有黄色感叹号;换一根确认能传数据的线;重新插拔看弹窗。四条都过了还是空,试试adb kill-server && adb start-server。
5.2 现象:报错「adb server version doesn't match this client」
原因:系统里存在多个 adb.exe,比如模拟器自带的、Android Studio 自带的、你手动解压的,版本不一致,server 和 client 对不上。解决:where adb看有几个路径,把非 platform-tools 的从 PATH 里去掉,或者直接全盘搜adb.exe把多余的改名。最彻底的办法是只保留一份,其他模拟器的 adb 用绝对路径调用。
5.3 现象:unauthorized 一直不消失
原因:手机端的授权密钥和电脑端不匹配,通常是之前点过拒绝,或者换了 USB 口。解决:手机开发者选项里「撤销 USB 调试授权」,拔线重插,重新弹窗点允许。如果还不弹,删掉电脑端C:\Users\你的用户名\.android\adbkey和adbkey.pub,重启 adb server 再插。
5.4 现象:adb push 大文件中途断
原因:USB 供电不稳、线材质量差、或者手机端存储权限问题。解决:换后置 USB 口(台式机前置口供电弱),换短线,或者改用adb push加--sync参数。大文件建议先 push 到/sdcard/Download/再在手机上移动,避免直接写系统目录权限不足。
5.5 现象:fastboot 认不到设备
原因:fastboot 模式和 adb 模式是两套驱动,进了 bootloader 后设备管理器里会变成另一个未识别设备。解决:进 fastboot 后重新看设备管理器,装 Android Bootloader Interface 驱动。另外fastboot devices和adb devices不能同时用,进 fastboot 前先adb reboot bootloader,别手动按键进。
6. 进阶:用 sqlite3 和 dumpsys 把设备数据挖出来
platform-tools 里被低估的两个工具是sqlite3.exe和adb shell dumpsys。做性能分析或者数据取证时,它们比装一堆第三方工具直接得多。
先说 sqlite3。安卓应用的数据库存在/data/data/包名/databases/下,普通权限读不了,但 debug 包或者有 root 的设备可以:
adb shell su cd /data/data/com.example.app/databases sqlite3 app.db .tables select * from user limit 5;如果不想进 shell,也可以先 pull 出来在电脑上分析:
adb pull /data/data/com.example.app/databases/app.db . sqlite3.exe app.db ".tables"参数说明:.tables列出所有表,.schema 表名看建表语句,.dump导出全部数据。注意 pull 出来的 db 可能带-wal和-shm文件,要一起拉,否则数据不完整。
再说 dumpsys,它能吐出系统各服务的运行状态,做卡顿分析时特别有用:
adb shell dumpsys meminfo com.example.app # 内存占用 adb shell dumpsys cpuinfo # CPU 占用 adb shell dumpsys gfxinfo com.example.app # 渲染帧率 adb shell dumpsys battery # 电池详情 adb shell dumpsys window | findstr mCurrentFocus # 当前前台窗口gfxinfo输出的Janky frames比例是判断滑动卡顿的关键指标,一般超过 5% 就要查布局层级。meminfo里的TOTAL PSS是实际物理内存占用,比dumpsys meminfo第一行的TOTAL更准。
我自己的习惯是每次拿到新设备,先跑一遍adb shell getprop ro.build.version.release确认安卓版本,再adb shell wm size看分辨率,然后adb shell dumpsys battery看电池健康,这三条命令十秒钟能把设备底细摸清。从那以后我每次配新环境,都强制先跑adb version和adb devices两连,确认工具链和连接都正常再往下走,省得后面出问题来回猜。希望帮到你。
本文还有配套的精品资源,点击获取