前言

演示视频以及相关文档 -> https://sonic-cloud.cn/ide/re-ide.html

Sonic IDE 是 Sonic 平台打造的 IDE 编辑器,可以支持直接调试内部 Sonic 平台的设备,如果您不习惯 Sonic 提供的无脚本自动化方案,那么 IDE 或许是你的选择。 目前包含以下多种功能

  1. 远程控制设备
  2. 实时控件获取
  3. 支持多种语言编程
  4. 等等...

目前 IDE 还是一个很初版的形态,我们也承诺会继续保持免费,还需大家多多提建议,我们一起把他做得更好

背景

我们 Sonic 开源以来,我们发现我们用户类型越来越多,以前我们主要服务于 UI 自动化小白和开发产品等等角色。但是随着开源时间变长,我们发现了部分想使用 Sonic,但是又不能与公司内部已有的大量自动化脚本结合而放弃了 Sonic 的用户。于是,我们构想出一种仅仅只是将 Sonic 用作设备管理角色,但是 UI 自动化还是用公司已有的框架的方式。

一、REST API 暴露

第一步,Sonic 自身需要暴露 REST API 可远程暴露连接的方式,这个功能在 v2.5.0 已经加上了。效果是用户调用相关接口后,设备会进入占用状态并且返回远程 adb 连接地址和其他可选的服务地址,这样很方便可以跟已有脚本结合放到 Jenkins 等 CICD 中执行

二、IDE 设计

第二步,设计一个 Sonic 专属的 IDE,可以使得用户一边进行自动化编程,一边观察设备运行情况。

在公司内部运用场景与分工大概如下:

运维人员负责部署好 Sonic Server 与 Agent 相关信息,QA 只需下载好 Sonic IDE,在里面登录至内部 Sonic 平台即可。

我们通过这种方式,可以减少 QA 的使用门槛,直接在 IDE 中获取设备的控件信息和远程控制,有利于提升编写脚本的效率。

于是我们开始了漫长的技术拉锯战...

误区

有意思的是,我们发现目前还是仍有非常大量的用户并不清楚 Appium 的技术原理,包括 ATX 的 uiautomator2 和 appium 的 uiautomator2 很多人以为是同一个东西,所以有时候用户将 instrument 相关的 UI 自动化框架应用到 Sonic 时遇到问题会无从下手。

Sonic 目前采用的是 Appium 的 uiautomator2-server,而且写了相关的 java api ,可以参考这里 https://github.com/SonicCloudOrg/sonic-driver-core

对比 Appium 的好处是不需要再启动一个本地 Appium Server 和多一层转发服务,直接跟 uiautomator2 交互。所以当自己的第三方 UI 自动化框架冲突时,或许直接用 adb 杀掉 uiautomator2 是个不错的方式。(当然我们 REST API 也可以控制 uiautomator2 是否启动

未来展望

最近 ChatGPT 是一个很火的东西,不少人希望能利用到工作中提升自己的效率。我们也有计划后面加入到 IDE 中,其余的会逐渐迁移 Sonic 更多 Web 版功能到 IDE 上。


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