sonic云真机系列浅析

716 阅读4分钟

背景

去年因业务需要,开始调研Android和iOS双端设备的自动化相关平台,实际上这一块的开源内容并不多,对于设备管理的鼻祖项目应该是stf,不过现在已经迁移为Device Farmer了,个人也体验过stf搭建的平台,功能还是挺多的,就是技术栈确实不太热门,维护起来成本不低(因为自身都是偏后端的缘故),而且搭建环境有点麻烦(也多亏有了docker)。因此需要寻求一个新的解决方案。

Python环境下的完美选择-【open-atx】

一开始的时候关注的是open-atx组织下的atx相关项目(openatx),这是一个非常出色的开源项目,它的特点如下:

  • 将Uiautomator和Python结合起来,上手极快
  • 配合atx-agent这种注入Android设备内启动httpserver的方式,实现远程设备管理
  • 集成了minitouch和minicap,实现了设备控制和设备投屏
  • 实现了一个设备管理平台atxserver2

囊括了设备管理、设备远控、设备执行等自动化关注的关键方面的内容。并且在atx-agent这个项目中,用go实现了一个在Android端执行的server,将设备信息获取、设备操作执行的方式转化了简单的http调用,摆脱了数据线连接的这个限制。可能有人会说,在Android上这个不算稀奇,apk就可以实现相同的功能呀。但是apk需要安装,在现在每个手机厂商都在搞自己一套手机ROM的时候,你压根就不知道它会用什么方式来阻止你的adb install。而这种方式则避免了上述的尴尬,直接后台启动后响应请求就可以了。atx-agent这个项目很值得学习一下,不但可以充实Go编程方面的技能,也可以拓宽自身对于移动端的视野。

打算将sonic系列浅析完成后,就去研究下atx-agent

Java环境下的完美选择-【sonic云真机】

这个项目是Java环境下完美的解决方案(Sonic云真机)。作者把自己对于设备自动化这个理念贯彻的非常彻底,接连推出了20多个相关的项目组件,组成了一套非常完备,易于上手、布局清晰的设备云真机框架。对于这种开源项目,真的是非常的钦佩。

sonic云真机主要的项目列举如下:

  • sonic-server:云真机的管理平台后端,负责任务创建、设备管理、项目管理等业务
  • sonic-agent: 核心功能的agent,上传下达,上传server端,下达设备端,并同时兼顾Android和iOS
  • sonic-ios-bridge: iOS管理核心包
  • sonic-android-supply: Android adb功能拓展包
  • sonic-client-web:管理平台的前端工程

还有很多相关的项目,都是为了解决某一个问题而推出的解决方法。而且作者还贴心的提供了docker和docker-compose部署的方案,实现一键部署的目标。

完全的上手即用,没有多余的烦恼。

专栏动机

最终肯定是选择了sonic作为设备自动化的管理跳板,并开始了sonic相关项目的二开之旅。但是直到现在,我自己觉得虽然对这个框架也算比较熟悉了,但是有时我还是需要跳出来,不拘泥于业务需求,来整体的对sonic这一套进行一个梳理,我也不敢说自己100%掌握了,所以想着一边梳理,一边以关注点demo的方式来再回顾一遍。这样也算是一个小小的经验积累吧。

所以后续的文章,都会以某一个问题点或者是解决办法为切入口,然后参照sonic源码,提取这个知识点的一个demo,来排除其它非重点因素的干扰,不知道这种方式效果会怎么样,但就先这样试试吧。

再次感谢上面这些开源项目的作者们,能贡献出这么精彩的开源之花!