前言

在一年前写过一篇安卓设备集群管理 atx-server的文章,主推设备的无线接入,服务端用的是我最喜欢的 Go 语言。承蒙大家厚爱,文章不仅加精,而且还有 1 万 6 千多的阅读量,很多人将这套工具部署到了公司内部,给 ATX 的 QQ 群带了源源不断的人群。我作为开发者,也在内部部署了一套,在陆陆续续的使用中,体会到了它的优点,也渐渐的发现了它的不足。

优点主要体现在设备接入方便,手机通过数据线完成初始化后,就可以拿在手里到处跑了。平台可以直接连接手机运行自动化脚本,下载日志,甚至远程操作。
缺点则主要体现在稳定性上,数据线的速度传输速度显然要比 WIFI 连接快的多,而且还不用担心手机没电的问题。

重构计划

atx-server 在使用的过程中不断的优化,当有一天最终优化不下去了。于是开始了atxserver2的筹备计划。这个项目 2019/01/15 号开始开发的,目前开发了大概 3 个月了。已经比较稳定了。以前的服务端是用的 Go+RethinkDB,现在则是用的 Python3+NodeJS+RethinkDB。

架构图

thanks to 坚果云绘图工具

主要希望提供的 Features(不过有些完成了,有些没完成)

有个用户迫切需要 WIFI 设备的接入功能,我问他为什么。他的理由真的让人无法反驳,他说:“我们的电脑没有 USB 接口”。

如果还想要其他的 Feature,可以留言,或提 Issue 到这里 https://github.com/openatx/atxserver2/issues/1 虽然我不一定会有时间做

网页功能预览

远程控制原理简介

Android 的远程控制主要还是基于 minicap+minitouch+atx-agent (不过感觉最近 openstf 的作者们,有点太忙了,没空管这个项目。之前 adbkit 有个 bug,我提了一个 pr,很久都没有收到回复。)我估计下个版本我就不用 minicap+minitouch 了。有个 scrcpy看起来不错,或许以后可以合并进来。

iOS 的远程控制主要还是基于 appium fork 的 WebDriverAgent。因为 appium 在 WDA 中增加了 MJPEG Server,所以让远程投屏成为了可能。不过只支持 iOS 12.0 以上。

REST API 接口

这个版本相比之前的 atx-agent,有着更全面的权限控制。一旦你释放了设备,安卓或苹果的远程连接地址就会立刻换掉,防止平台上没有占用设备,但是却可能控制设备的事情发生。

See also: https://github.com/openatx/atxserver2/blob/master/API.md

项目地址和部署方法

https://github.com/openatx/atxserver2

目前这个版本提供了 Docker 的部署方式,可谓是简单快捷。一句docker-compose up命令就能将服务端启动起来。而 provider 的部署,用docker run ...就可以运行起来。手机连接上去之后,就会自动安装需要的 apk 和二进制文件。如果需要支持 iOS,可能步骤要多点,不要有很详细的步骤供参考。

因为大部分是 Python 写的,我想这个版本贡献代码的人应该会多起来吧。

FAQ

为什么还在用 RethinkDB?

总有人问我 RethinkDB 不是停止维护了吗?为什么要选这个数据库。因为这玩意实在太好用了,功能多,内存占用少,支持各种各样的平台部署。见过好的之后,你就再也不想用以前的。实际上这个数据库已经转交 Linux 基金会了,Github 上这个项目还是有断断续续的提交,且它运行的一直还都很稳定。所以就先这样吧。

提示错误:zipfile.BadZipFile: File is not a zip file

因为用到了 git-lfs,用来往项目中塞二进制文件。没有安装它,就不会下载哪些必要的二进制文件。修复方法:根据https://git-lfs.github.com/的安装提示完成 git-lfs 的安装,之后执行git lfs install && git lfs pull,然后重新运行即可。

其他问题欢迎留言


↙↙↙阅读原文可查看相关链接,并与作者交流