WSL环境下Droidbot连接ADB时遭遇端口绑定失败错误
WSL环境下Droidbot连接ADB时遭遇端口绑定失败错误
我之前处理过类似的场景,这个错误的核心原因是WSL与Windows共享网络栈时,ADB的端口绑定逻辑引发了冲突——Windows侧的ADB已经占用了报错里的60997端口,WSL中的进程再尝试绑定同一个端口就会触发“10048”的端口占用错误。下面给你几个实用的解决思路:
方法一:让WSL直接复用Windows的ADB进程(推荐)
不需要在WSL里单独启动ADB服务,直接复用Windows侧已运行的ADB,从根源上避免端口冲突:
- 确保你已经在PowerShell中启动了ADB服务(这步你已经完成了)
- 在WSL的终端里,把ADB的执行路径指向Windows系统里的ADB程序,执行命令(记得替换成你自己的Android SDK路径):
export ADB="/mnt/c/Users/你的用户名/AppData/Local/Android/Sdk/platform-tools/adb.exe" - 先测试连通性:执行
$ADB devices,如果能正常列出你的Android设备,说明配置生效了 - 启动Droidbot时,确保它使用的是这个Windows版本的ADB(可以通过命令行参数指定ADB路径,或者把这个环境变量配置到WSL的
~/.bashrc里持久化)
方法二:修改ADB监听端口,避免冲突
如果必须在WSL中使用独立的ADB服务,可以通过指定不同端口来绕过冲突:
- 先在Windows的PowerShell里停止当前ADB服务:
adb kill-server - 重新在Windows侧启动ADB并指定一个新的端口(比如5038):
adb -P 5038 start-server - 回到WSL终端,设置ADB端口的环境变量,再启动Droidbot:
export ADB_SERVER_PORT=5038 # 执行你的Droidbot启动命令,比如 python droidbot.py ...
方法三:临时释放占用的端口
如果你想确认是哪个进程占用了60997端口,可以在Windows的PowerShell里执行:
netstat -ano | findstr :60997
找到对应的PID后,打开任务管理器结束该进程,再重新尝试连接。不过这个方法属于临时解决方案,ADB后续可能会自动重新占用端口。
另外补充一点:如果你使用的是WSL2,记得检查Windows防火墙是否阻止了WSL访问localhost的端口,可以临时关闭防火墙测试连通性,若正常则添加对应的允许规则。
备注:内容来源于stack exchange,提问作者Mudoker




