atxserver2-android-provider简介

atxserver2-android-provider是一款用于安卓设备自动化数据交互的工具,它基于uiautomator2框架,结合minicap和minitouch进行屏幕显示和交互。该工具能自动发现并安装所需组件,并提供冷却设备和安装应用的接口。其核心功能包括设备发现、心跳协议、以及通过URL安装应用等。
摘要由CSDN通过智能技术生成

简介

atxserver2-android-provider 主要用户和安卓设备进行数据交互;
主要使用uiautomator2框架,在屏幕的显示传输与交互上主要使用minicap与minitouch;

流程

atxserver2-android-provider可以通过adb track-devices自动发现已经接入的设备,当手机接入到电脑上时,会自动给手机安装(接入的设备需要配置好开发者选项,打开允许ADB的一系列操作,可能有的还要输入密码):
可以参考:设备连接
minicap, minitouch, atx-agent, app-uiautomator-[test].apk, whatsinput-apk
这些文件一般存储在Vendor文件夹下,没有可以运行其中的python文件下载;
在这里插入图片描述

启动参数

命令行参数
--port 本地监听的端口号
--server atxserver2的地址,默认localhost:4000
--allow-remote 允许远程设备,默认会忽略类似10.0.0.1:5555的设备
--owner, 邮箱地址或用户所在Group名,如果设置了,默认连接的设备都为私有设备,只有owner或管理员账号能看到

比如wifi连接就要加入 --allow-remote,详细可以参考:WIFI接入

atxserver2-android-provider提供的接口

主要有两个接口,冷却设备和安装应用。 认证:url query中增加secret=来实现认证。secret可以在provider启动的时候看到,也可以去数据库里找;
安装应用
通过URL安装应用

$ http POST $SERVER/app/install?udid=${UDID} secret=$SECRET url==http://example.com/demo.apk
{
    "success": true,
    "output": "Success\r\n"
}

冷却设备
留出时间让设备降降温,以及做一些软件清理的工作

$ http POST $SERVER/cold?udid=${UDID}
{
    "success": true,
    "description": "Device is colding"
}

目录结构

vendor : 目录下的文件通过git-lfs管理
stf-binaries-master.zip 直接去 https://github.com/codeskyblue/stf-binaries 下载zip
atx-agent-latest.zip 需要cd到vendor目录,运行download-atx-agent.py去生成

asyncadb.py: 主要是用来建立一个TCP连接,为以后如果要执行ADB命令做基础准备还有一些工具方法;
device.py: 主要和安卓设备进行数据交互的类
device_names.py: 设备名字字典
main.py: atxserver2-android-provider入口,其中apk传输,设备清理,以及一些基类都在这里
settings.py: atx_agent版本的存储位置

heartbeat.py: 心跳协议,数据连接和判断设备是否连接的时候会用到 通过该协议,服务端(atxserver2)能够知道有哪些设备接入了系统。以及当前连接的设备的状态。协议基于WebSocket,传递的内容均为JSON格式.

当前atxserver2的websocket地址为 : ws://$SERVER_HOST/websocket/heartbeat
握手请求:provider -> atxserver2

{
  "command": "handshake",
  "name": "--provider-name--",
  "owner": "--owner-of-devices--",
  "secret": "--需要跟server端保持一致,不会会被拒--",
  "url": "--provider-url--",
  "priority": 1
}

priority主要通过手工去设置,数值越大代表该provider性能越好,网速越快。 url字段代表provider的url,通过约定好的格式,可以实现安装,释放设备的操作
握手回复:atxserver2 -> provider

握手成功返回

{
  "success": true,
  "id": "xxxxx-xxxx-xxx"
}

失败返回

{
  "success": false,
  "description": "xxxx",
}

更新设备状态: provider -> atxserver2

Android设备上线

{
  "command": "update",
  "platform": "android",
  "udid": "xxxx-设备的唯一编号-xxxxx",
  "properties": {
    "serial": "xxxx",
    "brand": "xxxx",
    "version": "xxxx",
    "model": "xxxx",
    "name": "xxxx",
  },
  "provider": {
    "atxAgentAddress": "10.0.0.1:7912",
    "remoteConnectAddress": "10.0.0.1:5555",
    "whatsInputAddress": "10.0.0.2:9955"
  }
}

properties通常为不常变动的信息。

Android设备离线

{
  "command": "update",
  "udid": "xxxx-设备的唯一编号-xxxxx",
  "provider": null,
}

当WebSocket断线时,这个时候需要重连,Provider需要重发一次手机的信息。

这里与本篇文章无关

喜欢二次元动漫的小伙伴可以微信扫一扫关注一下哟,点赞关注,鼓励一下博主呦
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值