ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ADB 安装配置全攻略:环境变量、驱动与无线调试实战

ADB 安装配置全攻略:环境变量、驱动与无线调试实战 1. 为什么 adb 值得你花时间装一遍如果你正在做 Android 开发、自动化测试、逆向分析或者只是想让手机和电脑之间传文件、截屏、装应用更顺手一点那 adb 这个名字你一定绕不开。adb 全称 Android Debug Bridge是 Android SDK 里自带的一个命令行工具本质上是一个客户端-服务端架构的调试桥梁。你在电脑上敲的每一条 adb 命令都会先发给本地的 adb server再由它转发给手机或模拟器上的 adbd 守护进程最终落到系统里去执行。听起来有点绕但用起来其实就一句话它是你电脑和 Android 设备之间最直接、最底层的那根数据线。很多人第一次接触 adb 是因为某个具体需求比如“adb 截图保存电脑”“adb 无线调试”“adb logcat 抓取日志”或者“adb unauthorized 怎么解决”。这些热搜词背后其实都指向同一个问题adb 没装好或者环境没配对。我见过太多人卡在“adb 不是内部或外部命令”这一步就放弃了其实只要把路径配好后面的事情都顺理成章。这篇内容就是把我自己反复装过几十次 adb 的经验整理出来从下载、解压、配环境变量到驱动安装、无线调试、常见报错排查全部走一遍。不管你是刚入门的新手还是换了新电脑需要重新配环境的老手都可以直接照着做。需要提前说明的是adb 本身不依赖 Android Studio你完全可以只下载一个 platform-tools 压缩包就搞定。网上很多教程一上来就让你装几个 G 的 IDE对于只想用 adb 的人来说完全是负担。我下面会以最轻量的方式来讲同时也会提到如果你已经装了 Android Studio怎么直接复用它的 adb避免重复下载。2. 安装前的准备工作与版本选择2.1 确认你的操作系统和硬件条件adb 支持 Windows、macOS、Linux 三大平台但不同系统下的安装方式差别不小。Windows 用户需要额外注意驱动问题macOS 和 Linux 通常插上就能识别。先确认你的系统版本Windows 建议 Win10 及以上macOS 建议 10.15 以上Ubuntu 这类发行版基本都没问题。另外要确认你有管理员权限因为配环境变量和装驱动都需要提权。如果是公司电脑先确认安全策略允不允许你安装外部驱动否则后面会卡在驱动签名那一步。硬件方面你需要一根能传数据的 USB 线。注意很多充电线只能供电不能传数据这是新手最容易踩的坑。我建议直接用手机原装线或者买一根明确标注支持数据传输的线。如果你打算用无线调试那手机和电脑必须在同一个局域网内这一点后面会详细讲。2.2 下载 platform-tools 还是用 Android Studio 自带这是第一个分岔路口。如果你只是偶尔用 adb或者不想装几个 G 的 IDE那就直接下载 platform-tools 独立包。Google 官方提供了各平台的压缩包解压后就是一个文件夹里面包含 adb、fastboot 等工具。截至我写这篇内容时platform-tools 的版本已经更新到 35.xadb 版本号也跟着走。网上有人找“adb工具1.0.32.zip电脑版免费版”那个版本其实已经非常老了建议直接用官方最新版兼容性和安全性都更好。如果你已经装了 Android Studio那 adb 通常位于C:\Users\你的用户名\AppData\Local\Android\Sdk\platform-tools这个路径下。你可以直接把这个路径加到环境变量里不用再单独下载。但要注意Android Studio 自带的 adb 版本可能和你后面用到的某些工具要求的版本不一致比如报错“adb server version (31) doesnt match this client (41)”这就是版本冲突的典型表现。遇到这种情况统一用同一个 adb 可执行文件就能解决。2.3 解压路径的选择与注意事项下载完 platform-tools 压缩包后解压路径很关键。我强烈建议放在一个纯英文、无空格、无特殊字符的路径下比如D:\Android\platform-tools或C:\adb。为什么因为 adb 在某些场景下对中文路径和空格路径支持不好尤其是你后面要跑脚本或者用其他工具调用 adb 时路径里有空格会导致命令解析出错。我见过有人解压到“桌面\新建文件夹\adb工具”结果怎么都跑不起来换成C:\adb就立刻好了。解压完成后打开文件夹确认里面有adb.exeWindows或adbmacOS/Linux以及fastboot、AdbWinApi.dll等文件。如果只有 adb 没有 dll那说明你下载的包不完整重新下一遍。确认无误后记住这个路径下一步配环境变量要用。3. 环境变量配置的完整流程3.1 Windows 下配置 PATH 的详细步骤环境变量的作用很简单让你在任意目录下敲adb都能被系统找到。如果不配你就只能先 cd 到 platform-tools 目录再执行非常麻烦。Windows 下配置步骤如下右键“此电脑”或“我的电脑”选择“属性”。点击“高级系统设置”再点“环境变量”。在“系统变量”区域找到Path选中后点“编辑”。点“新建”把你刚才的 platform-tools 路径粘贴进去比如D:\Android\platform-tools。一路点“确定”保存。注意如果你用的是 Win10 之前的系统Path 变量是一长串字符串需要在末尾加英文分号再粘贴路径。Win10 及以上是列表形式直接新建一行就行。配完后一定要重新打开一个命令行窗口因为环境变量只在新的进程里生效。很多人配完发现没反应就是因为还在用旧的 cmd 窗口。验证方法是打开 cmd 或 PowerShell输入adb version。如果显示版本号说明配置成功。如果提示“adb 不是内部或外部命令”那就回到环境变量检查路径有没有写错或者路径下有没有 adb.exe。还有一种情况是“Windows10 管理员找不到 adb”这通常是因为你用管理员身份打开的命令行加载的是另一套环境变量检查一下系统变量而不是用户变量。3.2 macOS 与 Linux 下的配置方式macOS 和 Linux 下配置更简单但要注意 shell 类型。如果你用的是 zshmacOS 默认编辑~/.zshrc如果是 bash编辑~/.bashrc或~/.bash_profile。在文件末尾加一行export PATH$PATH:/Users/你的用户名/Library/Android/sdk/platform-tools或者你解压到其他路径就换成对应路径。保存后执行source ~/.zshrc让配置立即生效。Linux 下同理把路径换成你解压的位置即可。验证同样是adb version。macOS 上还有一个坑从网上下载的 adb 可能被 Gatekeeper 拦截提示“无法打开因为无法验证开发者”。解决办法是在“系统偏好设置-安全性与隐私”里点“仍要打开”或者用xattr -d com.apple.quarantine命令去掉隔离属性。这个坑我第一次在 M1 Mac 上装的时候踩过折腾了半小时才反应过来。3.3 验证安装是否成功的三种方法配完环境变量后用以下三种方式验证方法一命令行输入adb version能看到版本号即成功。方法二输入adb devices如果 adb server 正常启动会显示List of devices attached即使没有设备连接也算成功。方法三输入where adbWindows或which adbmacOS/Linux能输出 adb 的完整路径说明系统找到了它。如果adb devices报错* daemon not running; starting now at tcp:5037 could not read ok from adb server这通常是端口被占用或者 adb server 启动失败。先执行adb kill-server再adb start-server如果还不行检查 5037 端口有没有被其他程序占用用netstat -ano | findstr 5037找到占用进程并结束它。4. 驱动安装与设备连接4.1 Windows 下 adb 驱动怎么装Windows 用户插上手机后设备管理器里可能会出现一个带黄色感叹号的“Android Device”或“ADB Interface”。这说明驱动没装好。解决办法有几种第一种用手机厂商自带的驱动。比如小米、华为、OPPO 都有自己的 USB 驱动去官网下载安装即可。第二种用 Google 官方的 USB Driver这个在 Android SDK Manager 里可以下载或者单独搜“Google USB Driver”下载。第三种用通用的 ADB 驱动工具比如“adb驱动”这个热搜词指向的就是这类工具但要注意下载来源尽量用官方或可信渠道。安装驱动时右键那个带感叹号的设备选择“更新驱动程序”然后手动指向你下载的驱动文件夹。如果提示“Windows 无法验证此驱动程序软件的发布者”选择“始终安装此驱动程序软件”。装完后设备管理器里应该能看到“Android Composite ADB Interface”或类似名称没有感叹号。4.2 手机端需要开启的开发者选项光装驱动还不够手机端必须开启 USB 调试。步骤是设置-关于手机-连续点击“版本号”七次直到提示“你已处于开发者模式”。然后返回设置找到“开发者选项”打开“USB 调试”。部分手机还需要打开“USB 安装”和“USB 调试安全设置”。这里有个细节有些手机比如老款创维电视或机顶盒的开发者选项藏得比较深热搜词里“老款创维如何打开adb”和“机顶盒强制adb”就是这类问题。电视和机顶盒通常需要在关于页面连续点按特定按键或者通过工厂菜单开启。不同品牌方法不同建议直接搜“品牌型号开启adb”找对应教程。4.3 连接后 adb devices 显示 unauthorized 怎么办这是最常见的问题之一。当你第一次插上手机并执行adb devices时手机会弹出一个“是否允许 USB 调试”的对话框必须点“允许”。如果你没看到弹窗或者点了拒绝就会显示unauthorized。解决办法拔掉数据线重新插注意看手机屏幕有没有弹窗。如果没弹窗去开发者选项里点“撤销 USB 调试授权”然后重新插线。还不行就重启手机和电脑再试。检查数据线是不是只能充电的线。如果以上都试过还是 unauthorized可以尝试删除电脑上的 adb 密钥重新生成。Windows 下密钥在C:\Users\你的用户名\.android目录下删除adbkey和adbkey.pub两个文件然后adb kill-server再adb devices手机会重新弹窗。5. adb 常用命令与实战场景5.1 设备管理与应用安装卸载装好 adb 后最常用的命令其实就那么几个。先看设备管理adb devices # 列出已连接设备 adb devices -l # 列出设备并显示详细信息 adb connect 192.168.1.100:5555 # 无线连接设备 adb disconnect # 断开无线连接应用安装卸载adb install app.apk # 安装应用 adb install -r app.apk # 覆盖安装保留数据 adb uninstall com.example.app # 卸载应用 adb shell pm list packages # 列出所有包名 adb shell pm list packages -3 # 只列出第三方应用这里有个经验adb install如果报INSTALL_FAILED_ALREADY_EXISTS加-r参数覆盖安装即可。如果报INSTALL_FAILED_VERSION_DOWNGRADE说明你要装的版本比已装的低加-d参数允许降级。这些参数组合在实际调试中非常有用。5.2 文件传输与截图录屏adb 截图保存到电脑是热搜里的高频需求命令如下adb exec-out screencap -p screen.png这条命令直接把截图输出到电脑当前目录比先adb shell screencap再adb pull少一步。注意 Windows 的 cmd 里重定向可能会把二进制数据搞坏建议用 PowerShell 或者 Git Bash 执行。如果一定要在 cmd 里用可以先截到手机再 pulladb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png录屏类似adb shell screenrecord /sdcard/demo.mp4 adb pull /sdcard/demo.mp4文件传输通用命令是adb push和adb pulladb push local.txt /sdcard/ # 电脑传到手机 adb pull /sdcard/remote.txt . # 手机传到电脑5.3 日志抓取与问题排查adb logcat是排查应用崩溃、ANR 的核心工具。基本用法adb logcat # 实时输出所有日志 adb logcat -c # 清空日志缓冲区 adb logcat -v time log.txt # 带时间戳输出到文件 adb logcat *:E # 只看 Error 级别 adb logcat -s TAG # 只看指定 TAG实际排查问题时我通常先adb logcat -c清空然后复现问题再adb logcat -d log.txt把当前缓冲区导出。这样日志干净定位快。如果日志太多可以用grep或findstr过滤关键字比如adb logcat | grep -i crash。5.4 无线调试的配置与稳定性优化无线调试分两步先用 USB 连一次执行adb tcpip 5555然后拔掉线执行adb connect 手机IP:5555。手机 IP 可以在 WiFi 设置里查看。连接成功后adb devices会显示192.168.x.x:5555 device。无线调试的稳定性取决于网络质量。如果经常断可以尝试以下优化确保手机和电脑在同一网段关闭手机省电模式路由器开启 5GHz 频段避免大量设备同时占用网络。另外部分手机重启后无线调试会失效需要重新用 USB 执行adb tcpip 5555。如果嫌麻烦可以在开发者选项里找“无线调试”功能Android 11 及以上支持配对码连接不需要 USB 线。6. 常见报错与排查速查表6.1 版本不匹配与 server 启动失败报错adb server version (31) doesnt match this client (41); killing...是典型的版本冲突。原因是你电脑上有多个 adb.exe比如 Android Studio 自带一个你单独下载的 platform-tools 里又有一个两者版本不同。解决办法是统一用一个把另一个从环境变量里去掉或者直接用同一个 adb 去 kill-server 再 start-server。报错* daemon not running; starting now at tcp:5037 could not read ok from adb server通常是 5037 端口被占用。执行adb kill-server然后检查端口占用netstat -ano | findstr 5037找到 PID 后在任务管理器里结束对应进程再adb start-server。6.2 设备识别问题与驱动冲突adb devices显示为空但手机明明插着。排查顺序换数据线确认是数据线不是充电线。换 USB 口优先用主板后置 USB 口。检查手机开发者选项和 USB 调试是否开启。检查设备管理器有没有黄色感叹号。重启 adb serveradb kill-server adb start-server。重启手机和电脑。如果设备管理器里显示的是“MTP”或“便携设备”而不是 ADB 接口说明手机没进入调试模式重新插线并确认手机弹窗。6.3 权限问题与 shell 命令执行失败执行adb shell相关命令时报Permission denied通常是因为没有 root 权限。普通 adb shell 只能访问有限目录比如/sdcard。如果要访问/data等系统目录需要 root。另外adb shell locksettings set-disabled true这类命令需要系统权限普通设备执行会失败。adb shell uiautomator dump用不了常见原因是 UI 层级太深或者有动画导致 dump 失败。可以加--compressed参数或者先停止动画再 dump。如果还是不行检查设备是否处于锁屏状态解锁后再试。6.4 常见问题速查表报错/现象可能原因解决办法adb 不是内部或外部命令环境变量没配好检查 Path重开命令行adb devices 为空驱动/线/调试开关换线换口检查开发者选项unauthorized未授权弹窗撤销授权重插删 adbkeyserver version mismatch多个 adb 版本统一 adb 路径could not read ok from adb server5037 端口占用结束占用进程重启 serverINSTALL_FAILED_ALREADY_EXISTS应用已存在加 -r 覆盖安装INSTALL_FAILED_VERSION_DOWNGRADE版本降级加 -d 允许降级uiautomator dump 失败动画/锁屏停动画解锁后重试7. 我踩过的坑与实操心得第一个坑是路径里有中文。我早期把 adb 解压到“D:\工具\adb”结果adb devices一直报错换成D:\adb就好了。后来查资料才知道adb 底层调用的一些库对非 ASCII 路径支持不好。所以无论 Windows 还是 macOS路径尽量纯英文。第二个坑是数据线。我有一次用了一根看起来很粗的线结果只能充电不能传数据折腾了半天以为是驱动问题。后来换原装线立刻识别。所以遇到设备不识别第一件事就是换线这是成本最低的排查手段。第三个坑是无线调试的 IP 变化。手机每次重连 WiFi 可能会分配新 IP导致adb connect失败。解决办法是在路由器里给手机绑定静态 IP或者每次连接前先确认手机当前 IP。另外部分路由器开启了 AP 隔离会导致手机和电脑无法互访需要在路由器设置里关闭。第四个坑是 logcat 缓冲区溢出。长时间抓日志时旧日志会被新日志覆盖。如果问题复现时间较长建议用adb logcat -v time log.txt实时写入文件而不是等复现完再-d导出。另外可以增大缓冲区adb logcat -G 16M。第五个坑是多个 adb 版本共存。我电脑上同时装了 Android Studio 和独立 platform-tools结果经常报版本不匹配。后来我把 Android Studio 的 adb 路径从环境变量里去掉统一用独立包的 adb问题就消失了。如果你也用 Android Studio可以在设置里指定 adb 路径让它用你指定的那个。最后分享一个小技巧如果你经常需要截图可以写一个批处理或 shell 脚本把adb exec-out screencap -p %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.png做成快捷方式一键截图并自动按时间命名。这个脚本我用了好几年比任何截图软件都快而且不依赖手机端操作。
返回列表