WSABuilds 旁加载实战:修复 WSA ADB 连接错误 10061(目标机器积极拒绝连接)
【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds
导读
在 Windows Subsystem for Android(WSA)上通过 ADB 安装 APK 时,开发者常常会遇到No connection could be made because the target machine actively refused it. (10061)报错。本指南基于 WSABuilds 仓库的 TargetMachineActivelyRefusedConnection 修复文档,系统梳理该错误的触发场景、底层根因(Hyper-V 与端口 58526 的冲突),并给出从"快速重启"到"端口永久保留"的完整修复链路,同时结合仓库中的 ADB 旁加载指南与 FAQ,提供验证方法与备选连接方案。读完本文,你将能独立诊断并根治 WSA 的 ADB 连接问题。
一、错误背景:这个报错出现在什么场景?
错误 10061 的完整输出形如:
cannot connect to ||127.0.0.1:58526:|| No connection could be made because the target machine actively refused it. (10061)该错误几乎总是出现在以下两种旁加载场景中(详见 原修复文档):
- 使用第三方旁加载 GUI 工具,如 WSA-Sideloader、WSAPacman;
- 使用命令行
adb.exe直连,即通过 Android SDK Platform Tools 对 WSA 执行adb connect。
这两类工具的核心机制相同:都依赖 ADB 的无线调试能力,默认通过本机回环地址127.0.0.1:58526与 WSA 建立连接。因此,只要端口 58526 上的连接被拒绝,无论用哪个工具都会撞上同一条错误信息。
1.1 正常情况下的 ADB 连接流程
作为对照,先看仓库中 ADB-Sideloading 指南 描述的完整连接流程:
- 启动Windows Subsystem for Android;
- 进入Advanced Settings(高级设置),打开Developer mode(开发者模式)开关;
- 记下开发者模式页面显示的IP address and port(IP 地址与端口);
- 打开 Windows Terminal,确认已安装 ADB;
- 执行配对命令:
adb pair 127.0.0.1:58526- 在无线调试窗口中查看Device name(设备名称)及其下方的 IP 地址与端口;
- 执行连接命令:
adb connect 127.0.0.1:58526- 用
adb devices确认 WSA 已处于连接状态。
注意:从仓库 FAQ(MagiskOnWSA/docs/README.md 与 MagiskOnWSA/DLL/docs/README.md)来看,
58526是 WSA 默认暴露给 ADB 无线调试的端口;而 WSA 设置页中实际显示的动态调试端口则是另一套(详见下文"备选连接方案")。
1.2 GUI 旁加载工具如何使用这个端口
- WSA-Sideloader:仓库的 WSA-Sideloader 使用指南 明确指出,若在安装 APK 时遇到
No connection could be made because the target machine actively refused it,应直接参照本修复指南处理。 - WSAPacman:WSAPacman 指南 要求首次使用前必须在 WSA 的
Developer页打开开发者模式,并授予 ADB 调试权限——若 10061 报错出现,同样意味着 ADB 通道未建立成功。
二、根因分析:Hyper-V 与端口 58526 的冲突
根据原修复文档,这是一个 WSA子系统自身的 bug(对应微软官方仓库的 issue #136)。其机制可以概括为:
- WSA 是运行在Hyper-V之上的虚拟机,其 ADB 无线调试端口(58526)需要由 Hyper-V 的网络栈进行端口预留;
- 由于 Hyper-V 的已知缺陷,它无法可靠地预留 58526 端口,导致 WSA 侧的监听端口没有生效;
- 此时从 Windows 主机侧向
127.0.0.1:58526发起 TCP 连接,内核会直接返回 10061(目标机器主动拒绝连接),因为没有进程在该端口上监听。
从源码结构看,WSABuilds 仓库之所以专门维护本修复文档,正是因为仓库的核心交付物(MagiskOnWSA 目录下的预构建二进制)把 Magisk/KernelSU、GApps 等集成进 WSA 之后,用户会大量使用 ADB 旁加载 APK——这一错误因此成为旁加载链路中最高频的拦路虎之一。
三、第一道保险:重启电脑
由于根因是 Hyper-V 的端口预留状态异常,重启电脑通常即可恢复。这是因为重启后 Hyper-V 会重新初始化其端口排除表(excluded port range),有机会正确接管 58526 端口。
如果重启后问题依旧,则执行下一节的完整修复流程。
四、完整修复流程:永久保留 58526 端口
修复思路分两条线并行:先让 Hyper-V 彻底释放端口管理权(通过临时禁用再启用),再用netsh把 58526 从 Hyper-V 的可抢占用端口池中排除(通过添加排除端口范围实现)。这样即便 Hyper-V 重启后重新扫描端口,也无法再占用 58526。
⚠️操作前提:以下命令均需管理员权限(PowerShell / CMD 以管理员身份运行),且会暂时中断 Hyper-V 相关功能(包括 WSA、WSL 等虚拟化工作负载),请在合适的时间窗口执行。
第 1 步:彻底关闭 WSA 并禁止其自启动
- 关闭Windows Subsystem for Android(通过其设置页或任务栏图标退出);
- 打开任务管理器(Task Manager)→启动应用(Startup Apps)页签,找到 WSA 相关条目并禁用自启动。
这一步的目的是防止 WSA 在修复过程中被自动拉起并重新占用/监听 58526,干扰后续端口操作。
第 2 步:禁用 Hyper-V
在管理员 PowerShell 中执行:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V执行后,Hyper-V 及其端口排除逻辑会被关闭,端口 58526 将完全交还 Windows 主机管理。
第 3 步:重启电脑
禁用 Hyper-V 后需要重启,使系统真正脱离 Hyper-V 的端口管理状态。
第 4 步:为 58526 添加端口排除范围
在管理员CMD中执行:
netsh int ipv4 add excludedportrange protocol=tcp startport=58526 numberofports=1参数含义:
| 参数 | 说明 |
|---|---|
int ipv4 | 操作 IPv4 协议栈的接口配置 |
add excludedportrange | 添加一段"排除端口范围",范围内的端口不会被系统/服务自动占用 |
protocol=tcp | 仅对 TCP 生效(ADB 无线调试走的是 TCP) |
startport=58526 | 排除范围起始端口,即 WSA 的 ADB 调试端口 |
numberofports=1 | 范围长度为 1,仅排除 58526 这一个端口 |
该命令的本质是在 Windows 内核的端口分配表中为 58526 打上"保留"标记,Hyper-V 之后便无法再将其纳入自己的端口排除/预留范围,从而杜绝"Hyper-V 把 58526 抢回去"这一根因。
💡 建议顺手用
netsh int ipv4 show excludedportrange protocol=tcp验证排除是否生效——如果 58526 出现在输出列表中,说明保留成功。
第 5 步:重新启用 Hyper-V 并再次重启
如果第 2 步执行前 Hyper-V 本来就是开启状态(WSA 依赖 Hyper-V 运行,通常如此),则需重新开启:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All然后再次重启电脑,让 Hyper-V 在 58526 已被排除的前提下完成初始化。
至此修复完成,可以重新启动 WSA,按第一节的流程再次执行adb pair/adb connect 127.0.0.1:58526验证。
五、验证与备选连接方案
5.1 验证连接
修复完成后,回到 ADB-Sideloading 指南 的流程:
adb devices若输出中包含127.0.0.1:58526 device,则连接成功,可以继续adb install <file path>安装 APK。
5.2 备选方案:使用 WSA 设置页显示的动态端口
如果 58526 的保留问题暂时无法解决(例如不想动 Hyper-V),仓库 FAQ 给出了另一条路径(MagiskOnWSA/docs/README.md):
- 确认 WSA 的Developer mode已开启;
- 打开 WSA 设置页Developer页面,查看其中显示的 IP 地址与端口(这是一个由 WSA 动态分配的无线调试端口);
- 用该端口替代 58526 进行连接:
adb connect <ip>:5555注意:WSA 默认的
localhost:58526与设置页显示的动态端口并不总是同一个;当 58526 因 Hyper-V 冲突不可用时,动态端口方案是绕过问题的有效手段,但其端口号会随会话变化,需要每次在设置页确认。
5.3 相关排查:防火墙与本地回环
如果连接问题表现为"能连上但网络不通"而非 10061,可参考仓库中另外两份文档:
- FixInternet.md:排查 Windows 防火墙中 "Windows Subsystem for Android™" 的入站/出站规则是否被禁用或阻止,并处理第三方杀软(如 ESET、Bitdefender、AVG 等)防火墙误拦 WSA/WSL 流量的情况;
- LocalHostLoopback.md:若目标是让 WSA 访问 Windows 主机的 localhost 服务(开发联调场景),需要以管理员身份配置 Hyper-V 防火墙规则,例如:
Set-NetFirewallHyperVVMSetting -VMCreatorId '{9E288F02-CE00-4D9E-BE2B-14CE463B0298}' -LoopbackEnabled True New-NetFirewallHyperVRule -DisplayName LoopbackAllow -VMCreatorId '{9E288F02-CE00-4D9E-BE2B-14CE463B0298}' -Direction Inbound -Action Allow -LocalPorts [PORT]六、修复流程速查表
| 步骤 | 操作 | 命令/位置 | 作用 |
|---|---|---|---|
| 0 | 重启电脑 | — | 触发 Hyper-V 重新初始化端口排除表,多数场景直接恢复 |
| 1 | 关闭 WSA、禁用自启动 | 任务管理器 → 启动应用 | 防止修复过程中 WSA 重新监听 58526 |
| 2 | 禁用 Hyper-V | dism.exe /Online /Disable-Feature:Microsoft-Hyper-V | 交还端口管理权 |
| 3 | 重启 | — | 使 Hyper-V 关闭生效 |
| 4 | 排除端口 58526 | netsh int ipv4 add excludedportrange protocol=tcp startport=58526 numberofports=1 | 防止 Hyper-V 重新抢占该端口 |
| 5 | 重新启用 Hyper-V 并重启 | dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All | 恢复虚拟化环境并验证保留 |
| 验证 | 连接 WSA | adb pair 127.0.0.1:58526→adb connect 127.0.0.1:58526→adb devices | 确认旁加载通道可用 |
七、小结
错误 10061 是 WSA 旁加载链路中最常见的"假故障"之一:问题不在 APK、不在 ADB 配置,而在 Hyper-V 无法稳定预留 58526 端口。通过"禁用 Hyper-V → 用netsh排除端口 → 重新启用 Hyper-V"的完整流程,可以一劳永逸地解决该问题;若追求临时绕过,使用 WSA 设置页动态端口执行adb connect ip:5555也是仓库 FAQ 认可的替代路径。当旁加载通道恢复后,即可按 ADB-Sideloading 指南 完成 APK 安装,或借助 WSA-Sideloader、WSAPacman 等 GUI 工具进行批量应用部署。
【免费下载链接】WSABuildsRun Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) built in.项目地址: https://gitcode.com/GitHub_Trending/ws/WSABuilds
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考