You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

共享adbkey的多AWS EC2实例连接ADB设备出现offline及设备缺失问题

问题根本原因

  • ADB over TCP/IP原生不支持多客户端同时连接同一台设备的ADB守护进程,同一时间仅能维持一个有效TCP会话,多实例抢连会直接导致会话中断、设备端ADB状态异常,就是你遇到的offline、设备列表不显示的核心诱因。
  • 相同adbkey同时发起连接请求时,会触发设备端ADB的密钥校验冲突,哪怕会话未成功建立也会导致内部状态混乱,这就是你重启EC2端ADB服务无效、仅重启设备偶尔能恢复的原因。
  • AWS VPC网络抖动会放大异常:如果TCP会话异常断开未发送FIN包,设备端ADB会将僵尸会话保留最多10分钟,期间新的连接请求会被直接拒绝。

高可靠性改造方案

方案1:单设备绑定单实例(轻量化场景,实例与设备数量一一对应)

  • 禁止多实例访问同一设备,每台设备固定分配给指定EC2实例操作。
  • 每次连接设备前先执行adb disconnect <deviceIp>清理残留会话,再执行adb connect <deviceIp>,所有操作完成后主动执行断开命令释放连接。
  • 调整EC2实例TCP参数缩短僵尸会话超时时间:
sudo sysctl -w net.ipv4.tcp_keepalive_time=30 net.ipv4.tcp_keepalive_intvl=10 net.ipv4.tcp_keepalive_probes=3
  • 所有实例统一升级到最新版Android Platform Tools,避免旧版本ADB的已知TCP连接bug。

方案2:搭建ADB集中调度层(多实例共享设备池的生产场景)

  • 新增独立的ADB调度服务器,所有设备固定与调度服务器保持长连,禁止EC2业务实例直接连接设备。
  • 调度层实现设备锁逻辑:保证同一时间单台设备仅分配给一个业务实例使用,操作完成后立刻回收设备使用权,业务实例通过调用调度层接口间接执行ADB命令。
  • 调度层内置异常恢复逻辑:检测到设备状态异常时自动执行设备端ADB重启、网络重置操作,无需人工介入。

内容的提问来源于stack exchange,提问作者Prakhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:09:02