您当前的位置:首页 > 电脑百科 > 软件技术 > 应用软件

移动设备管理平台的搭建(基于STF/ATXServer2)

时间:2021-03-01 11:50:19  来源:  作者:

公司主要业务包含游戏AI及自动化测试,我们的AI团队需要利用移动设备对游戏内AI机器人的表现做一些持续性跟踪优化,自动化测试团队这边对于游戏的UI自动化测试开发工作也在不断向前推进,两者对于移动设备的使用都是必要的。

由于移动设备资源有限,存在频繁互借,忘记归还等情况。为了解决管理和调用问题,我们做了一些深入调研,最后了解到,可以采用开源框架STF或者是ATXServer2来解决,将有限的资源达到最大化的输出。下面会对通过这两种方式搭建移动设备管理平台做个简单的介绍,同时,也做个简单的比较,大家可以根据公司业务情况对其进行选择。

1. 基于STF搭建移动设备管理平台

1.1 STF介绍及优劣势分析

  • STF是最早的远程真机调试平台,现在所有的远程真机调试其实都是借鉴了它的实现思想。
  • 优势:支持Android/ target=_blank class=infotextkey>安卓2.3-10.0系统(10.0系统为目前最新)通过浏览器远程控制,支持远程鼠标键盘对真机进行操作远程复制粘贴功能快照截图应用包及文件的上传/下载功能支持远程端浏览器进行真机访问操作日志输出及错误日志输出打印脚本运行(可实现后续的自动化测试)开发人员进行远程debug功能提供设备机的CPU,内存,电量等性能的监测固化测试机器的系统版本,系统设置,不被篡改
  • 劣势:仅支持安卓手机远程控制,IOS不支持(需要二次开发)并不能很好兼容国内各种各样的安卓定制化手机,可能会遇到STF.APK无法正常安装到手机或者无法正常自动启动服务的情况。

1.2 架构介绍(Nodejs+Angularjs+Rethinkdb)

STF的核心功能可以理解为:“同步图像” + “点击”。前者使用minicap完成,后者依赖minitouch。

具体结构看下图:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

设备端

  • STF在会在android设备上安装minicap和minitouch。使用minicap来捕获屏幕,使用minitouch来触发多点触控事件,并通过adb使用socket在服务端和设备端进行数据传输。
  • STF还会在android设备上安装STFService.apk,它在设备后台运行,提供了一组socket api可以用来监控和执行不同的action。 同理,它也是通过adb和服务端通信,不过它使用的是protocal buffer数据格式。
  • minirev,直接从Android设备的端口转发本地服务,即便不在一个网段。

服务端

  • STF的服务端由多个不同的独立的,基于nodejs的微服务组成,这些服务之间是通过ZeroMQ通信。服务端可以进一步分成Provider 层和Application层。

Provider 层

  • Provider层(stf-provider)主要负责和设备之间进行通信。
  • 通过adb来监控设备状态,当有新的设备连接,或者有设备断开则会立刻监控到。
  • 如果是新的connect设备,则provider会folck一个新的nodejs进程(stf-device), 这个进程主要负责与该设备的所有通信。
  • stf由两个部分组成,分别是stf-provider和adb。
  • 需要注意的是,provider层的服务需要跑在物理机上,所有的设备需要连着这台物理机。

Application 层

  • Application层则是由stf -api、stf -app和stf -auth等微服务组成,这些微服务组成了一个完整的STF。
  • 从部署的角度来看,这些服务可以跑在任意地方,唯一的要求就是,这些服务能够通过网络和provider通信,这也就是意味着他们需要在同一个网段上。

Client 层

  • 使用Angular JS实现
  • 通过websocket与服务进行通信

1.3 环境搭建

强烈建议在centos下利用Docker搭建,相信我,这绝对是最优且最简单的方式。

(1)安装docker服务

  • 进入docker官网下载对应docker安装包进行安装
  • 命令行执行docker version检查是否安装成功

(2)利用docker拉取镜像文件

  • 开启docker服务
  • 拉取docker镜像文件
docker pull devicefarmer/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
docker pull openstf/ambassador:latest
docker pull Nginx:latest
  • 通过docker images查看镜像文件是否拉取成功

(3) 启动容器

  • 先启动一个数据库
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090 
  • 再启动adb service
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
  • 最后启动stf
docker run -d --name stf --net host openstf/stf stf local --public-ip 宿主机IP地址

一定要注意启动顺序,stf 依赖 rethinkdb,所以要先启动 rethinkdb,启动完成后使用: docker ps -a 查看是否启动成功,顺便获取stf的container ID。

移动设备管理平台的搭建(基于STF/ATXServer2)

 

(4) 启动STF程序

  • 首先进入stf镜像目录
docker exec -it stf的containerID /bin/sh
  • 启动stf命令
stf local --public-ip 宿主机IP地址 --allow-remote  

启动之后,局域网浏览器输入 http://宿主机IP地址:7100 可以打开STF登录界面,随意输入帐号邮箱后登录,不过目前还没有设备。

移动设备管理平台的搭建(基于STF/ATXServer2)

 

(5) 连接设备

由于是在Centos虚拟环境搭建的平台,不能进行设备直连,故在局域网windows电脑连接设备进行远程连接,在未安装STF 的电脑上暴露adb端口(搭建SDK环境),建议采用默认端口:5037;

指定端口号与服务器进行通讯:

adb -a -P 5037 fork-server server

如果出现以下错误:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

在任务管理器中关掉 adb.exe,或使用命令 adb kill-server 关掉adb程序,重新运行上述命令。若还是执行失败,建议换成低版本adb(1.0.32版本)再试试。

直到执行命令出现OK。

移动设备管理平台的搭建(基于STF/ATXServer2)

 

(6)切换到Centos环境连接windows下移动设备

在启动STF的命令行输入:

stf provider --name localhost.localdomain --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 宿主机IP地址 --storage-url http://localhost:7100/ --adb-host 局域网windowsIP地址 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
移动设备管理平台的搭建(基于STF/ATXServer2)

 

连接成功后显示移动设备信息:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

STF设备列表界面:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

STF设备操作界面:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

1.4 过程中可能用到的一些命令

docker

docker start 容器名  #启动某个容器
docker stop 容器名   #停止某个容器
docker rm 容器名     #删除某个容器

linux

netstat -anp |grep 端口号   #查看端口占用
kill -9 对应端口PID        #删除进程
移动设备管理平台的搭建(基于STF/ATXServer2)

 

2. 基于ATXServer2搭建移动设备管理平台

2.1 ATXServer2基本介绍

ATXServer2其实是在STF基础上,使用Python3+NodeJS+rethinkdb搭建的一个设备管理平台,功能和STF差不多,但是可以实现IOS设备远程控制。

2.2 ATXServer2远程控制原理简介

Android的远程控制主要还是基于 minicap+minitouch+atx-agent;

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

2.3 ATXServer2整体项目结构

移动设备管理平台的搭建(基于STF/ATXServer2)

 

整体项目主要包括四部分:

  • rethinkdb: 一个开源的轻量级的数据库,是用来存储数据的。rethinkdb官网地址
  • atxserver2 :这一部分主要负责处理数据,显示与用户的前端交互等等,所以单独运行atxserver2也可以看到效果,当运行起来以候访问: IP:4000 就可以看到web界面。
  • atxserver2-android-provider: 这一部分是接入安卓设备必须启动的项目,主要负责安卓设备和平台的交互工作,要想接入安卓设备必须启动此项目。
  • atxserver2-ios-provider: 这一部分是接入IOS设备必须启动的项目,主要负责IOS设备和平台的交互工作,同样的要想接入IOS设备必须启动此项目。(注意需要mac电脑)

项目结构:

|-- static  静态目录
|-- temlates  前端界面
|-- web  网页代码
      |-- urls.py 路由整合文件
      |-- settings.py  配置文件
      |-- database.py  数据库操作相关
      |-- utils.py  常用配置
      |--views  每个界面的逻辑
        |--slave.py  与atxslave通信用
        |--devices.py  设备相关路由
        |--base.py  基于ReguestHandler的基类

还有其他一些文件夹:

  • scripts文件夹: 主要放着一些用于调试开发的工具类等,比如想调试安卓项目可以单独运行fake_android_provider.py 与atxserver2-android-provider,并且其中的参数要改一些,一般不用太关注这个文件夹。
  • examples文件夹 : 存放着一个自动化的Demo,采用的自动化框架是uiautomator2,设备占用接口参考了openstf的API。

所有的接口采用token认证,每个请求在 Header中增加 Authorization: Bearer xxxxx-token-xxxx,这个token值可以在个人的用户信息界面获取到,也存储在rethinkdb里; 接口都是通过web请求调用,可以用 “httpie” 这个工具或者直接用python的 request 方法调用。

2.4 环境搭建(这里介绍手动部署方式)

(1)安装运行rethinkdb数据库

  • rethinkdb下载安装地址 https://rethinkdb.com/docs/install
  • 最简单的方式,跟STF搭建方法一样,拉取docker镜像文件,先启动一个rethinkdb数据库,可返回上面查看步骤。

(2)克隆代码到本地

  • 先将代码clone到本地
git clone https://github.com/openatx/atxserver2.git
  • 安装依赖,到根目录执行
pip3 install -r requirements.txt

(3)启动

  • 启动atxserver服务,进入atx2所在目录并执行
python3 main.py
  • 设置监听端口
python3 main.py --port 4000  # 默认监听的就是这个地址
移动设备管理平台的搭建(基于STF/ATXServer2)

 

启动之后,局域网浏览器打开:http://宿主机IP地址:4000, 完成认证之后就可以顺利的看到设备列表页了。不过目前还是空的,什么都没有。

移动设备管理平台的搭建(基于STF/ATXServer2)

 

(4)Android设备接入

接下来,进行安卓设备接入。这时需要用到另外一个项目 atxserver2-android-provider 这个项目运行需要Python3.6+和NodeJS(官网强调node必须使用node8);

  • 先将代码clone到本地,我是clone到了同局域网windows设备上,考虑可以连接移动设备。
git clone https://github.com/openatx/atxserver2-android-provider.git
  • 安装依赖,到atxserver2-android-provider根目录执行
pip3 install -r requirements.txt
  • 检查移动设备连接
adb devices
  • 启动Provider服务连接宿主机,进入到atxserver2-android-provider根目录执行
python main.py --server 宿主机IP地址:4000  

Provider可以通过adb track-devices自动发现已经接入的设备,当手机接入到电脑上时,会自动给手机安装minicap,minitouch,atx-agent,app-uiautomator-[test].apk,whatsinput-apk。

移动设备管理平台的搭建(基于STF/ATXServer2)

 

浏览器输入 宿主机IP地址:4000 访问ATX server2设备管理系统,设备列表展示如下:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

ATX server2设备管理系统设备控制界面:

移动设备管理平台的搭建(基于STF/ATXServer2)

 

3. 总结

STF主要采用的是JAVA,项目较老,更新维护稍慢,作者位于国外,交流不便;主要语言js居多,框架比较完善定型了,另外,不支持苹果设备远程连接;

ATXserver2主要使用python3,国内在作者,方便沟通交流;atxserver2更像是一个内核发动机,可以自己diy一些想要的功能,并且支持苹果设备远程连接;

基于对STF与ATXserver2的比较,我们最终选择在ATXserver2的基础上二次开发,加入一些想要实现的功能。当然,除了在前人种的树下乘凉以外,我们更要追求一些新的突破!期待有想法的朋友加入,一起创新!



Tags:移动设备管理平台   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
公司主要业务包含游戏AI及自动化测试,我们的AI团队需要利用移动设备对游戏内AI机器人的表现做一些持续性跟踪优化,自动化测试团队这边对于游戏的UI自动化测试开发工作也在不断...【详细内容】
2021-03-01  Tags: 移动设备管理平台  点击:(467)  评论:(0)  加入收藏
▌简易百科推荐
ACDSee Pro 2.5 和ACDSee 2009(也就是 ACDSee 11)这两个版本,虽然图标最丑,但却是最适合目前使用的版本。(以前的ACDSee 3.1是第三方改装版,现在出现不稳定了,经常提示插件错误,虽...【详细内容】
2021-12-27  周星骋Cheng    Tags:ACDSee   点击:(2)  评论:(0)  加入收藏
IT之家 12 月 23 日消息,百度地图今日宣布,第二代车道级导航正式上线。据介绍,百度地图第二代车道借助北斗 + 5G,在实现全程车道级导航效果的基础上,全面升级最优车道推荐、全 /...【详细内容】
2021-12-24  IT之家    Tags:百度地图   点击:(10)  评论:(0)  加入收藏
推荐12款不用安装就能免费用的神仙软件,每一款都是百里挑一! 一、文件存储与传输1.不限量网盘地址:https://transferkit.io/一个在线云存储网盘,它提供了不限量的云存储空间,单文...【详细内容】
2021-12-17  牛片网    Tags:软件   点击:(15)  评论:(0)  加入收藏
古人说:凡事预则立不预则废,对于我们当代人来说,做好工作计划,更是职场人高效工作的第一步,所以计划对于我们的重要性不言而喻…… 工作表格模板汇总正是因为有了工...【详细内容】
2021-12-15  吴六柒    Tags:工作表格   点击:(32)  评论:(0)  加入收藏
当我们浏览知乎、Youtube、贴吧、CSDN等等,总会遇到服务商一些广告;复制文章的时候,剪切板总是自带一些版权信息;还有一些网页配色很亮,眼睛看着很不舒服。反正就是各种不爽。给...【详细内容】
2021-12-08  小皮虾Pro    Tags:浏览器   点击:(27)  评论:(0)  加入收藏
来源:AirPython作者:星安果 1. 前言大家好,我是安果!之前推荐过很多优秀的 Web 自动化工具,比如:Selenium、Helium、Cypress、Pyppeteer 等利用它们实现自动化的前提是必须安装依...【详细内容】
2021-11-30  CDA数据分析师    Tags:Automa   点击:(30)  评论:(0)  加入收藏
概述superset是由Airbnb开源的轻量级BI分析工具。主要有三大功能:使用数据可视化来探索你的数据,通过交互式的Dashboard来查看你的数据,通过Sql Lab来编写sql查询你的数据。特...【详细内容】
2021-11-30  新视像    Tags:Superset   点击:(21)  评论:(0)  加入收藏
媒体爆料称:近期,老牌音乐播放器Winamp宣布回归,官方网站也大改后重新上线。官方表示:不只是简单更新而是全面重制。新的Winamp 将推出适用于 Windows、macOS 和移动平台的多合...【详细内容】
2021-11-26    中关村在线  Tags:Winamp   点击:(23)  评论:(0)  加入收藏
新版高德地图上线 ADAS 预警导航功能,借助视觉 AI 技术,可智能识别前方车辆、行人,并提供碰撞预警、车道偏离等多种安全提醒,防止风险的发生。 在小联的调研中,只有6%的车机体验...【详细内容】
2021-11-23  手机互联    Tags:高德地图   点击:(143)  评论:(0)  加入收藏
朋友委托我帮忙看看可用邮箱大全有哪些?好用的企业邮箱是多少?他公司要开通企业邮箱。相信很多公司在考虑开通企业邮箱时,都会遇到这样的问题,企业邮箱哪个好?怎样选择合适的企业...【详细内容】
2021-11-11  超级打工人    Tags:企业邮箱   点击:(30)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条