Atxserver2设备平台搭建(docker)

什么是openSTF?

OpenSTF(Smartphone Test Farm)是一个web端移动设备管理平台,可以从浏览器端远程调试、远程管理设备。其实有点类似于我们现在很火热的云测平台,如:testin、百度MTC等等。并且这个项目在Github上开源:https://github.com/openstf/stf, 遵循Apache License 2.0开源协议。很多公司内部团队现在都开始通过STF建设自己的平台。
先看看项目的运行效果截图(摘抄自

 

 

支持的功能

  • Android 2.3 ~ Android 9.0 (IOS目前不支持)
  • 手机不需要root
  • 实时屏幕演示(刷新速率可达30-40fps)
  • 远程控制(包括点击、输入数据、复制粘贴)
  • 安装、卸载应用
  • 执行shell命令
  • 支持chrome远程调试工具
  • 文件资源管理器访问设备文件系统

 

不使用openSTF原因:本地在mac上部署后(docker部署出现问题较多),使用Android10手机连接后,服务一起出现报错,查看报错结果得知,缺少Android 20,也就是不再支持Android10以上,如果需要支持Android10,需要引入升级版本 DevicesFarm,且目前来说,延迟较大,放弃此方向

 

Atxserver2介绍

转自:https://zhuanlan.zhihu.com/p/142228748

实现框架图

 

 

 

目前已支持的Feature

  • [x] 使用Python重写服务端和客户端(Go语言写服务端速度有点慢,没有Python弄的快)
  • [x] 网页控制手机提供更全的功能(原有的atx-server功能非常的少,只有操作手机和一个手机shell终端)
  • [x] 支持USB设备的接入 (主要是为了提高稳定性)
  • [x] 支持iOS设备 (这个功能的呼声一直很高)
  • [x] 全面的REST API文档。(原来可能有,但是不全)
  • [ ] 支持WIFI设备的接入(这个暂时还没搞完,不过很快了)
  • [ ] 支持跨网段的设备接入 (假如有这个功能的话,感觉家里闲置的手机也能派上用场了)

 

远程控制原理简介

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 run ...就可以运行起来。手机连接上去之后,就会自动安装需要的apk和二进制文件。如果需要支持iOS,可能步骤要多点,不要有很详细的步骤供参考。

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

 

Atxserver2部署(win10 docker)

 

docker部署

参考文档:https://zhuanlan.zhihu.com/p/397311465

解决win10启动docker 出现wls2错误:

https://blog.csdn.net/LeungSr/article/details/117900614

 

其他软件要求如下(安装教程自行百度)

  1. python3.6以上版本(建议使用python3.9.6,本人安装版本为python3.8)
  2. nodejs,必须是8的版本(建议使用v8.17.0,可以使用n模块切换和管理node版本号)
  1. git

github链接拉取源代码

 

atxserver2 搭建

  1. 进入atxserver2-master代码进入cmd后,执行命令"docker-compose up",构建镜像,构建成功后可关闭窗口,容器已在运行服务

 

 

 

 

 

 

  1. 安装依赖

代码根目录执行:pip install -r requirements.txt

 

  1. 检查服务

在浏览器输入 http://172.19.0.3:4000, 在输入用户名 admin(可自定义其他名称), 即可进入如下页面

 

 

 

android-provider启动

  1. 进入atxserver2-android-provider-master根目录,输入CMD进入命令行

安装依赖,执行命令:pip install -r requirements.txt

  1. 连接设备,并打开开发者模式
  • 检查移动设备连接

adb devices

  1. 进入provider-master根目录,执行

python main.py --server 本机IP地址:4000 (本机地址可使用;127.0.0.1)

 

 

4.恭喜,搭建成功!!!

 

 

部署参考文档:

  1. https://blog.csdn.net/weixin_41693437/article/details/109379318?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162981320916780271581601%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162981320916780271581601&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-109379318.pc_search_result_control_group&utm_term=docker+%E9%83%A8%E7%BD%B2ATXserver2&spm=1018.2226.3001.4187
  2. https://zhuanlan.zhihu.com/p/358577464?utm_source=wechat_session&utm_medium=social&utm_oi=684053757415788544&utm_campaign=shareopn

 

常见问题

  1. 建议直接下载代码zip包,本地解压,克隆代码有文件出现编码字符集问题,如出现'r command not found 等错误
  2. 安装成功后,页面无法左右滑动

参考解决方案:https://www.cnblogs.com/ShineLeem/p/13785989.html

执行命令:

用Python 安装uiautomator2

pip install --pre -U uiautomator2 手机接到电脑上之后,需要先运行一下命令:

将需要的程序部署到手机上(一次即可)python -m uiautomator2 init

  1. 如果页面出现卡在如下页面,请重新安装一遍服务

 

 

 

4.出现报错:

Python3.8 tornado报错NotImplementedError

解决方案:(7条消息) Python3.8 tornado报错NotImplementedError_hehui1uu的博客-CSDN博客

https://blog.csdn.net/hehui1uu/article/details/117017616

 

修改文件路径:

C:\Users\13457\AppData\Local\Programs\Python\Python38\Lib\site-packages\tornado\platform

修改文件:asyncio.py

将第30行:import asyncio

替换为:

import platform

if platform.system() == "Windows": import asyncio asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

 

 

5.修改文件:

  1. android-provider-master package.json 修改加入 "private": true

{ "private": true, "dependencies": { "adbkit": "^2.11.1", "commander": "^2.19.0" } }

 

  2.atxserver2-master Dockerfile ,第6行 需要从pip切换pip3,或者pip3切到pip

FROM python:3.6

ADD . /app
WORKDIR /app

RUN pip3 install -r requirements.txt

ENTRYPOINT [ "bash", "scripts/wait-for-db.sh" ]
CMD ["python", "-u", "main.py"]

 

  

posted @ 2021-08-26 18:00  布谷鸟的春天  阅读(1215)  评论(0)    收藏  举报