目标
把手机统一挂载到电脑上,比如 500 台手机挂到 25 台电脑上。通过一台服务器统一管理所有手机的状态。测试电脑需要使用手机,通过该服务器获取手机。
正在使用的手机不会被再次分配
方案 1:STF 方案
通过 STF 方案实现这个功能,测试电脑向 STF 服务器申请手机
问题点 STF 会安装 apk 到手机里面,在给手机做压力测试时,手机会卡或者 kill 后台 apk,导致手机断开,从而导致正在进行的自动化测试无法继续。这个问题无法解决。
方案 2: 完全自己设计
服务器 + provider + 客户端
服务器
- 只保存当前所有手机的状态到内存,不保存数据库。手机状态包括手机的的 android 版本号,内存,分辨率等本身信息,另外还包括是挂在那台 provider 电脑上,usb 转 TCP 后的地址,是否正在被使用等信息。
- 服务器提供对外的接口,接收 provider 更新手机信息,接收客户端申请手机,并把手机传给客户端。
provider
- 通过 adbkit 工具,把手机转换成 tcp,可以给外界连接
- 电脑每秒钟读取连接的手机信息,并且把信息更新给服务器。
- 通过 socket 判断手机是否被使用。
客户端
- 通过服务器获取到可用手机后,通过 adb connect 把手机连接到本地使用
问题点
- 我已经在公司实现了这套流程,但是不稳定。反复多次插拔手机后,重启电脑等操作后,手机状态不正确,socket 的状态不正确。
- 服务器代码更新后,必须重启服务器,无法简单地做到无缝更新。这个是给自动化使用的,这样肯定是有问题的。
哪位大牛是否有现成的稳定方案可以推荐?或者这个需求是否有很多人有,起个项目一起开发?