You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL环境下Droidbot连接ADB时遭遇端口绑定失败错误

WSL环境下Droidbot连接ADB时遭遇端口绑定失败错误

我之前处理过类似的场景,这个错误的核心原因是WSL与Windows共享网络栈时,ADB的端口绑定逻辑引发了冲突——Windows侧的ADB已经占用了报错里的60997端口,WSL中的进程再尝试绑定同一个端口就会触发“10048”的端口占用错误。下面给你几个实用的解决思路:

方法一:让WSL直接复用Windows的ADB进程(推荐)

不需要在WSL里单独启动ADB服务,直接复用Windows侧已运行的ADB,从根源上避免端口冲突:

  1. 确保你已经在PowerShell中启动了ADB服务(这步你已经完成了)
  2. 在WSL的终端里,把ADB的执行路径指向Windows系统里的ADB程序,执行命令(记得替换成你自己的Android SDK路径):
    export ADB="/mnt/c/Users/你的用户名/AppData/Local/Android/Sdk/platform-tools/adb.exe"
    
  3. 先测试连通性:执行$ADB devices,如果能正常列出你的Android设备,说明配置生效了
  4. 启动Droidbot时,确保它使用的是这个Windows版本的ADB(可以通过命令行参数指定ADB路径,或者把这个环境变量配置到WSL的~/.bashrc里持久化)

方法二:修改ADB监听端口,避免冲突

如果必须在WSL中使用独立的ADB服务,可以通过指定不同端口来绕过冲突:

  1. 先在Windows的PowerShell里停止当前ADB服务:
    adb kill-server
    
  2. 重新在Windows侧启动ADB并指定一个新的端口(比如5038):
    adb -P 5038 start-server
    
  3. 回到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

火山引擎 最新活动