STF平台搭建及二次开发

STF(SmartphoneTestFarm)是一个移动设备管理平台,可以对移动设备进行远程管理、调试、远程桌面监控等操作。

这个系统类似于目前很流行的云测服务,但是目前只适合内部系统使用,从设计之初就没有过多考虑多用户及数据安全性。

虽然网页上提供的设备很像模拟器,但是实际上都是真机,因此安装到设备上的应用流畅性以及运行环境的真实性可以得到保证。

请注意,即使直接从NPM安装了STF,也需要这些依赖项,因为它们不能包含在软件包中。

在MacOS上,可以使用brew安装大多数依赖项:

brewinstallrethinkdbgraphicsmagickzeromqprotobufyasmpkg-config但上述代码很可能执行失败,届时根据brew的提示进行操作,可能涉及从源码安装、缺失依赖安装、无权限处理等,最终耗时可能比较长。

官方推荐在Linux发行版上安装使用STF,开发团队的开发环境为CoreOS,因此使用Linux发行版可能搭建过程较为容易,生产体验可能较其他系统更好。

安装好前置依赖之后就比较简单了,这里通过npmjs安装STF,仅需一行代码(如果顺利的话):

npminstall-gstf静静等待安装完成,如果执行失败,届时根据提示进行操作,可能涉及从源码安装、缺失依赖安装、无权限处理等。

上述代码属于基本使用,建议将上述代码替换为如下代码:

除了本地用户之外,STF还提供管理员级别,增加了对某些功能的权限(例如预订和分区系统、释放占用的设备、用户和设备管理等)。相应的内置管理员用户信息如下:

名称:administrator电子邮件:administrator@fakedomain.com

STF还有另一个内置对象,是用户和设备第一次注册到STF数据库时所属的根标准组,其默认名称为Common。

可以通过设置以下环境变量来覆盖这些内置对象的默认值,然后通过stflocal(之前未运行过STF)或stfmigrate(之前已运行过STF)命令初始化STF数据库:

sudostflocal--public-ip--port--auth-typeldap--auth-options'["--app-url","","--ldap-url","","--ldap-search-dn","","--ldap-search-class","","--ldap-search-field","","--ldap-username-field",""]'--allow-remote除了之前需要的--public-ip和--port,还有比较多的新增参数,我们一个个分析:

主机上USB接口有限,接普通的USBHUB会有供电不足的问题,如果用自供电的USBHUB也会有数据传输速率低延迟高的问题。

考虑过启动adb的WiFi连接模式,但传输的数据不够稳定,容易出现断开连接的情况。

最后发现adb可以进行远程连接,在STF服务器上远程连接其他设备上的adb服务,可以稳定扩张有限的USB接口,充分利用其他设备多余的USB接口。

首先需要在待连接的目标设备上运行adb服务(没有adb的话要装一个),端口号是5037,最好不要改端口号:

adbnodaemonserver-a-P5037之后在STF服务器上运行命令(记得要填入远程设备的IP地址):

运行成功后,STF服务器就可以连接到远程设备上的安卓手机了,但是无法读取到正在连接的状态,插上安卓手机后要等手机上的STFAPP完全启动才能正常操作,只影响刚插上的手机。

首先在主服务器上启动STF服务,按本文【2.STF基本搭建流程】执行即可。

之后在子服务器上启动STF服务,但不要指定到主服务的域名上。

进入源码文件夹执行命令:

npminstall如果npm执行失败,根据提示进行操作,可能涉及从源码安装、缺失依赖安装、无权限处理等。

如果是bower执行失败,很可能是GitHub上存储的部分仓库访问失败,大概率是需要给终端配置代理环境,需要在终端中执行:

如果还有某个bower的依赖安装失败了,那么很可能是这个依赖的GitHub仓库没了。

没错,bower是实时从GitHub上拉源码的,而且STF依赖的三方开源库还挺多的,所以万一有人删库跑路了,我们本地编译也会挂。

如果有,那么同步一下重新编译。如果没有,那就自己去找一个fork的仓库吧,GitHub或者Gitee都行,找到以后自己建个GitHub仓库更新一下本地的bower.json,再重新编译。

顺利安装所有依赖以后,需要先进行gulp构建,执行命令:

gulpclean&&gulpwebpack:buildglup构建完成后,执行npm命令(Mac上需要增加sudo):

前端入口js是res/app/app.js,各个构成模块如下:

我们看到/res/app下面是各个模块的前端代码。每个模块基本上都是由一个index.js、对应的controller.js、对应的pug、对应的css组成,这些模块组合在一起,就组合成了我们的看到的前端页面。如果需要增加自己开发的前端页面,需要将你的模板加入到其中去。

每一个模块的入口是他们各自的index.js。

在对应的index.js里面里面,定义了某个路由对应的pug模板以及controller。对应的pug模板就是前端要展示的页面,controller通过和后端通信,给pug提供展示的数据。

这块引用了很多/res/app/components/stf/下面对应的service。service会用到Websocket与服务端进行通信。

所以综上,如果要增加一个页面,需要在app.js,增加require(‘./xx’).name,需要增加xx目录下的index.js,xx-controller.js,xx.pug,以及在/res/app/components/stf目录下增加xx-service.js。

修改前端代码后需要执行命令:

gulpclean&&gulpwebpack:build另外STF内置汉化,可以在设置页面自行切换,也可在res/app/components/stf/language/language-service.js中替换默认语言:

后端代码都在stf/lib目录下,一般启动stf服务器用的是nodebin/stflocal,顺着bin/stf文件很轻易找到cli.js。这个js使用command.js定义了大量的node命令,这些命令又调用util/procutil.js创建大量进程。

具体进程可以看下openstf官方给出的这张图,虽然现在DeviceFarmer有做一些改动,但大致框架应该变化不大:

后端代码目录结构如下:

服务端处理信息流转有三个文件,cli/websocket/index.js、cli/triproxy/index.js、cli/processor/index.js。

db是数据操作文件,STF使用的数据库是rethinkdb,rethinkdb是以json方式存储数据的。

主要的逻辑分为db/api.js、db/index.js、db/setup.js、db/tables.js。

db的操作只需要修改db/tables.js与db/api.js即可,其它两个文件可以不用修改,db/api.js主要用于数据库增删查操作。

units是核心代码,根据其命名可得知其作用。

修改后端代码后需要先停止STF服务,然后执行命令:

sudonpmlink最后再启动STF服务。

STF本身是不支持iOS设备的,但是实际使用中也有iOS设备的需求,最好也要对iOS设备进行支持。

目前有尝试对iOS设备添加支持能力,虽然成功了,但没有达到Android的使用效果,流畅度和清晰度都不足。

STF使用的都是真机,需要摄像头的话也是用了真机的摄像头,对于一些用户想要进行扫描二维码、人脸识别、图像识别等测试时就捉襟见肘了。

可以尝试将图片、视频通过STF传输到真机上,模拟摄像头输入。最好是可以接入计算机的摄像头(如果有的话),将计算机的摄像头反向代理给STF连接的真机,不过考虑到带宽问题应该不好实现。

STF支持Chrome远程调试工具,可以调试设备上的H5页面,但是需要连接的话需要一个比较长的链路,不是特别方便。

如果可以内置H5调试工具,通过一个按钮或者一个面板开启,会方便很多。

STF目前可以读取真机的剪贴板,将最近一条复制的内容显示出来。但是无法读取计算机的剪贴板,不能将内容粘贴到连接的真机上,也不能达到在真机上复制直接在计算机上粘贴的能力。

希望可以打通真机和计算机的剪贴板,在真机上复制可以直接在计算机上粘贴,反过来也一样,这样才是一个顺畅的跨屏复制粘贴能力。

目前大多数设备上只能响应英文输入,即在计算机上使用键盘只能在真机上输入英文。

但我发现,Pixel设备弹出的输入法可以在切换到中文输入的情况下,响应计算机上的键盘输入,正常输出中文,AndroidStudio自带模拟器的输入法也可以输入中文。可能是谷歌输入法的能力,Pixel即AndroidStudio模拟器的输入法均为谷歌输入法,其他设备上均为国产输入法,可能在这方便稍有不足。

最好是STF将键盘输入拦截,参考appium的方式,将设备的输入能力由系统控制而不是受输入法限制。

目前STF虽然可以看到连接的真机的屏幕视频,但是听不到真机发出的声音,如果真机在浏览一些含有声音资源的音视频,那么用户无法听到声音,反而真机突然发出的声音可能会吓到设备管理员。

如果可以拦截真机的声音播放,考虑将STF作为一个虚拟的播放器,把声音传输到用户的计算机上。

STF设计初衷便是面向公司内部,它对所有用户的设想就是有一定可信赖的基础,在数据的安全性上具有天然的危险性,进程之间的所有内部通信都是不安全且未加密的。

要将STF二次开发并推向商业化,首先要解决的就是数据安全性问题。

STF实际上就是一个内部的云测平台,基于STF可以迅速开发出一个商业化的云测平台,只需要解决数据安全性问题、更改其中的用户管理系统、完善汉化能力,就能够作为一个简单的云测平台使用了。

STF支持自动化测试的能力,所以可以将STF自动化测试提供一个商业化的版本,很多APP需要进行兼容性测试,通过足够多的设备、品牌、版本可以达到更全面的覆盖密度。

THE END
1.沉浸式体验:挑战快速搭建一个外卖平台系统小程序#app开发沉浸式体验:挑战快速搭建一个外卖平台系统小程序#app开发微订 上海 0 打开网易新闻 体验效果更佳工业切纸机虽然力量很大,但高度是有限的 全球不知道 485跟贴 打开APP 大姐晒自己工作过程,手法惹得网友爆笑,可千万别让老板看到! 搞笑老狗子 750跟贴 打开APP 全厂没有一个电工会接这种高压电缆,老板拿出5000块,https://m.163.com/v/video/VNHNRP044.html
2.创建平台的方法如何搭建平台1. 确定平台类型:确定你想要创建的平台是什么类型的。例如,你可以创建一个电商平台、社交媒体平台、在线教育平台等等。 2. 市场调研:进行市场调研,了解你所选择的平台类型在目标市场上的需求和竞争情况。确保你的平台能够满足目标用户的需求,并能够在竞争激烈的市场中脱颖而出。 https://blog.csdn.net/whj12434/article/details/135028571
3.干货教你七步搭建网站平台,新手必看!以上的步骤执行成功之后,一个属于公司的平台网站就搭建完成,就可以使用域名访问自己的网站了。 总的来说,成功建立一个自己的网站涉及到的细节性东西比较多,以及后续的网站运营建设,比如,一个平台的发展方向、如何选择用户群、添加好的产品、如何进行用户互动、如何让更多人知道自己的网站等方面,这时候建议大家选择更有https://sctjsj.com/go-a774.htm
4.平台建设方案(精选十篇)所选用产品满足客户对产品选型的要求,具备高可靠性、高性能、高可扩展能力,高可控性,同时具备前瞻性,支持业界前沿的IPv6未来网络协议和在大规模网络中逐渐成为主流的MPLS VPN等技术。最终实现一个以“自适应网络”为基础,融合H3C ITo IP整体理念的弹性安全基础网络平台。https://www.360wenmi.com/f/cnkeywt29n1h.html
5.泰拉瑞亚最简易事件平台搭建攻略,泰拉瑞亚平台怎么搭建泰拉瑞亚游戏中最简易的事件平台需要先搭建距地面10格以上的凹形平台,然后把下方挖平整。今天小编就给大家介绍一下泰拉瑞亚最简易事件平台搭建攻略,有需要的小伙伴不要错过了。 泰拉瑞亚最简易事件平台搭建攻略 首先搭建距地面10格以上的凹形平台 然后把下方挖平整; 接着在两边放上1格实体方块 防止岩浆泄露 还有https://www.duotegame.com/mgl/30561.html
6.泰拉瑞亚最简易事件平台怎么搭建最简易事件平台搭建攻略《泰拉瑞亚》游戏中最简易的事件平台需要先搭建距地面10格以上的凹形平台,然后把下方挖平整。今天小编就给大家介绍一下泰拉瑞亚最简易事件平台搭建攻略,有需要的小伙伴不要错过了。 《泰拉瑞亚》最简易事件平台搭建攻略 首先搭建距地面10格以上的凹形平台 然后把下方挖平整 https://shouyou.3dmgame.com/gl/326587.html
7.性能监控平台搭建Grafana安装与简易使用指南这里我们介绍它,自然是与《InfluxDB安装与简易使用介绍》结合来展示性能监控平台的数据,由于它有良好的图表和高度的查询定制能力,所以非常适合用于性能监控数据的实时展示。 安装 官方下载地址:https://grafana.com/grafana/download YUM安装 对于Centos用户,可以用下面的命令添加InfluxDB的仓库 https://cloud.tencent.com/developer/article/1506610
8.基于OpenStack:搭建简易云平台并成功启动云主机的实践教程本文详细介绍了如何使用OpenStack搭建一个简单的云平台并成功启动云主机。通过实践过程,我们了解到了OpenStack的强大功能和灵活扩展性。随着云计算技术的不断发展,OpenStack将会越来越成熟和完善,为企业和个人用户提供更加优质的云计算服务体验。在未来的发展中,我们可以期待更多创新和优化的功能出现在OpenStack中,以满足https://www.ctyun.cn/developer/article/494616303218757
9.搭建简易的物联网服务端和客户端搭建简易的物联网服务端和客户端目录 移动家庭能力平台【1】 1.平台相关 1)官方网站 http://open.home.komect.com/dev/index.jsp 2)简介 家庭能力开放平台是由中移杭研提供的,面向开发者提供基础通信能力的开放平台。开发者可利用平台购买和使用能力,完成对互联网产品的开发和完善。 https://www.jianshu.com/p/2ad5e9df4db7
10.使用Linux服务器搭建直播服务器,并运用Apicloud平台简易快速的使用Linux服务器搭建直播服务器,并运用Apicloud平台简易快速的制作全功能直播APP。https://gitee.com/didea/simpleLive
11.莆田水库简易拼接浮桥漂浮钓鱼平台浮筒湖面漫步走廊搭建用浮筒莆田水库简易拼接浮桥 漂浮钓鱼平台浮筒湖面漫步走廊搭建用浮筒供应 浮动码头是在江河湖海边上供乘客上下,货物装卸的建筑工程,也是辅助船舶停靠的水上建筑,通常在水陆交通比较发达的城市使用。水域中有水位差也可以使用浮动码头,通过一个活动引桥与岸边相连。我司会根据停靠码头的船长和船舶间的安*间距离来设计码头。 https://xiangsu.11467.com/info/8039333.htm
12.网址太长?轻松搭建自己的短网址平台Shortnyv2.0.1源码搭建教程所以大飛果断的申请了一个免费域名,搭建一个属于自己的短网址平台,方便维护管理给大家分享资源时的链接。 源码简介 Shortny是一款国外的PHP短网址源码,程序非常小巧,但是功能是很多的,支持自定义后缀、加密访问,查看链接统计,而且还支持放广告,这个广告功能相信有些人会喜欢。界面也比较好看,支持白天/夜晚切换模式。由于https://www.isolves.com/it/wlyx/wzjs/2020-08-17/28606.html
13.使用Docker搭建测试用例管理平台TestLink:简易指南用户名:user 密码:bitnami 总结 通过使用Docker,我们可以快速简便地搭建TestLink测试管理工具,而无需担心环境配置的复杂性。希望本文对你有所帮助,让你能够更好地进行测试用例管理工作! 获取更多软件测试技术资料/面试题解析,请点击! 58第三步mariadb第二步https://maimai.cn/article/detail?fid=1826963516&efid=dkX-PiJkN2ujptgqsLor7A
14.中山网站建设/福州短视频seo平台Django之歌:简易博客搭建教程 在线阅读 PDF格式 EPUB格式 MOBI格式 Django 网站开发 Cookbook 在线阅读 PDF格式 EPUB格式 MOBI格式 Django 设计模式与最佳实践 在线阅读 PDF格式 EPUB格式 MOBI格式 Docker 中文指南 在线阅读 下载地址 Docker —— 从入门到实践 http://www.nhpp.cn/news/301393.html
15.龙门河道简易平台成钓鱼者“天堂”几名钓鱼者正在平台垂钓。 近日有市民向记者反映,称龙门河西林桥下游河段水位降低,致使大部分河床裸露,一群垂钓爱好者便在河床上随意搭建简易平台进行垂钓,不仅影响了龙门河两岸的整体景观,还存在较大的安全隐患。对此,县河堤管理处相关负责人表示,将会加强巡查,并进一步引导和规范钓鱼者行为,必要时会对这些平台进行清https://www.longmen.net/article/article_21451.html
16.用明道云搭建一个简易的线索分配应用明道云博客CRM系统应该算是很常见的一类企业管理系统了。在CRM系统中,线索的分配是很重要的一个环节,那怎么通过明道云去搭建这样一个应用呢?刚好最近我接触到一个有相关需求的客户,今天就以这个客户的需求为例,教大家如何用明道云搭建一个简易的线索分配应用吧。 https://blog.mingdao.com/19791.html
17.通过STB和SIP终端实现视频通信设计及搭建模拟测试平台通过STB和SIP终端实现视频通信设计及搭建模拟测试平台 前言 在视频通信信令协议中,SIP 协议凭借自身特有的优点成为研究与应用的热点.有线电视信号已从模拟转向数字,数字机顶盒是其过度的桥梁,能够使模拟电视用户同样观看到数字信号频道的节目.但是目前的数字机顶盒尚没有提供适合于散户安装的简易视频交互通信功能,具备这种https://www.elecfans.com/d/750648.html