ATX atx-server u2init 实现设备自动接入 server,即插即连

linpengcheng · July 31, 2018 · Last by linpengcheng replied at March 15, 2019 · 3373 hits

还在为atx uiautomator2每次设备重复的init设备而烦恼吗?
在搭建完atx-server之后,设备接入到atx-server需要将设备通过usb连接到电脑,然后执行命令python -m uiautomator2 init 10.0.0.1:8000来实现init设备,是不是觉得很麻烦?
现在给大家介绍个解放双手,自动实现init设备连接atx-server的方法。

项目地址:https://github.com/openatx/u2init
在安装部署完成之后,以后只要手机插上电脑 ,就可以自动连接上atx-server了

注意:步骤2的./init-resources.sh在windows上貌似不能执行,下面的操作都是在mac上操作的,在Linux上应该也没问题。

注意2:需要将atx-server更新一下,更新2018-7-27之后的最新代码就行
删掉go/src/github.com/openatx/下的atx-server文件夹,然后根据atx-server 安装运行及自动化的实践的步骤重新装一下atx-server就好啦

更新完atx-server启动成功, 如果你的server地址是10.0.0.1:8000浏览器访问 10.0.0.1:8000/provider/heartbeat看到下面的内容就ok了如果是404 page not found 那就是atx-server没更新成功.

下面介绍具体的安装的步骤:

1. 安装golang 开发环境

之前安装过atx-server的 可以忽略这一步
安装Golang环境
下载地址:https://golang.org/dl/
安装说明:http://www.runoob.com/go/go-environment.html

2. 安装u2init

$ go get -v github.com/openatx/u2init
$ cd go/src/github.com/openatx/u2init
$ go build

build完之后,下载相关的文件 stf stuffs(minitouch, minicap), atx-agent, uiautomator.apk(two apk actually)

$ cd go/src/github.com/openatx/u2init
$ ./init-resources.sh

下载可能要等一段时间,如果没反应就多试几次(.sh好像在windows上没法直接执行)
Mac上操作这部提示了一个错误wget command not found解决的办法如下

$ brew install wget

安装完wget之后再执行上面的./init-resources.sh就可以下载成功了
如果你的mac上没有安装brew的话,那就先装一下 brew官网

windows上的话就直接手动下载解压文件吧
https://codeload.github.com/openatx/stf-binaries/zip/0.1
将下载的zip文件解压后 放到go/src/github.com/openatx/u2init/resources目录下面,并重命名为stf-binaries-master
其他需要下载的文件,根据init-resources.sh写的一个个手动下完了,扔到resources目录下面

3. 启动u2init

如果你的atx-server是10.0.0.1:8000,直接下面的命令启动就好了

$ cd go/src/github.com/openatx/u2init
$ ./u2init --server 10.0.0.1:8000

在这里又会遇到一个问题,报错信息如下

2018/07/30 23:03:41 main.go:186: Init error: mini(cap|touch): open resources/stf-binaries-master/node_modules/minicap-prebuilt/prebuilt/armeabi-v7a/lib/android-23/minicap.so: no such file or directory

看了下目录go/src/github.com/openatx/u2init/resources下没有stf-binaries-master这个文件夹,但是存在一个stf-binaries-0.1的文件夹
解决的办法就是把这个文件夹重命名为stf-binaries-master就好了

或者单独启动u2init 不依赖atx-server

$ ./u2init 
# 已经不支持单独启动u2init 后面随便填一个地址就好了
# 例如 ./u2init --server 10.0.0.1:8000

成功启动u2init之后 正确的log信息应该是这样的

linpengchengdeMac-mini:u2init linpengcheng$ ./u2init -server 10.0.34.2:8000
adb server version: 39
u2init version 20180330
2018/07/30 23:49:48 main.go:226: Add adb.exe to PATH += /Users/linpengcheng/go/src/github.com/openatx/u2init/resources
2018/07/30 23:49:48 main.go:240: MachineID: 0E1693D6-8AEE-53CF-86F7-C72F06D42DC9
2018/07/30 23:49:48 main.go:242: u2init listening on port 61020
2018/07/30 23:49:48 main.go:257: Watch and init
2018/07/30 23:49:48 main.go:182: Device ce051715b2ef600802 came online
2018/07/30 23:49:48 main.go:184: ce051715b2ef600802%!(EXTRA string=Init device)
2018/07/30 23:49:49 main.go:48: product model: SM-G950F
2018/07/30 23:49:49 main.go:53: Install minicap and minitouch
2018/07/30 23:49:49 main.go:57: Install app-uiautomator[-test].apk
2018/07/30 23:49:49 main.go:138: APK already installed, Skip. Uninstall apk manually if you want to reinstall apk
2018/07/30 23:49:49 main.go:61: Install atx-agent
ce051715b2ef600802 server started, listening on 10.0.30.152:7912
2018/07/30 23:49:51 main.go:196: ce051715b2ef600802 Get http://127.0.0.1:57567/info: read tcp 127.0.0.1:61045->127.0.0.1:57567: read: connection reset by peer
2018/07/30 23:49:51 main.go:182: Device 0642f8d6f0ec9d1a came online
2018/07/30 23:49:51 main.go:184: 0642f8d6f0ec9d1a%!(EXTRA string=Init device)
2018/07/30 23:49:51 main.go:48: product model: Nexus 5
2018/07/30 23:49:51 main.go:53: Install minicap and minitouch
2018/07/30 23:49:52 main.go:57: Install app-uiautomator[-test].apk
2018/07/30 23:49:52 main.go:138: APK already installed, Skip. Uninstall apk manually if you want to reinstall apk
2018/07/30 23:49:52 main.go:61: Install atx-agent
0642f8d6f0ec9d1a server started, listening on 10.0.30.26:7912
2018/07/30 23:49:55 main.go:199: 0642f8d6f0ec9d1a UDID 0642f8d6f0ec9d1a-cc:fa:00:c8:ce:d8-Nexus_5
2018/07/30 23:49:55 main.go:200: 0642f8d6f0ec9d1a 7912 forward to 58982
2018/07/30 23:49:55 main.go:206: 0642f8d6f0ec9d1a Init Success

两台安卓设备插在电脑上,就自动连接到了atx-server了
如果你还有其他的设备,用usb往这台电脑上插一下,就ok了。
平时手机重复执行python -m uiautomator2 init 10.0.0.1:8000的操作基本上就用不到了

附上atx相关的基础链接
小白入门篇:python uiautomator2 的代码示例
浅谈自动化测试工具 python-uiautomator2
atx 安卓集群管理 安装运行及自动化的实践

ATX QQ交流群:499563266

附言 1  ·  July 31, 2018

有的手机在插上去的时候,usb的模式为仅充电,手需要动将usb连接模式改为传输文件MTP 就可以自动init成功了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 33 条回复 时间 点赞
codeskyblue ATX 群资金流公示 中提及了此贴 31 Jul 10:25

试着做一个apk从手机直接启动atx-agent 权限问题启动不了😭 这个只是少输一条命令而已 有点大题小作了吧

peter 回复

类似于stf的provider 不过拿来当自动init用也没啥问题

实战了一把,很不错~

所以今天的u2init的使用,就是先开atx-server【1.1.rethinkdb转发,1.22.atx-server监听】.然后再开u2init。
开启后已经连上的手机,u2init就会对其自动init【即安装mintouch等】.新用数据线连上的手机,u2init也会对其自动init
大多数手机,把那个通过USB验证应用关掉就好。
但有些手机还是很倔强的,init的时候还要你去手点。比如魅族m1,点了都安装失败。Failure [INSTALL_FAILED_USER_RESTRICTED]
😀 😀 哦也,总体还是蛮好的.

八个鸭鹿 回复

更新一般的u2init好像不用设置server地址 可以单独使用了 不过作者还没push

楼主你好,环境设置好连接手机出现 Init error: mini(cap|touch): target file "/data/local/tmp/minicap.so.tmp-magic1231x" not created 错误,再次连接手机Init Success 这是神马原因呢?

Joe 回复

不同的手机可能都不太一样吧 一次不行就多插拔几次

peter 回复

我也试了,必须得root手机,请问你这个最后用什么方案解决的?

韩杰峰 回复

最近忙其他业务,没时间研究哈,暂时可以root之后用

这个是什么错误啊?不会是需要root权限吧。。。
2018/12/03 16:12:19 [INFO]main.go:418: Init error: 39110be: mini(cap|touch): cop
y file to device failed: C:\Users\leping.zhao\go\src\github.com\openatx\u2init\r
esources\stf-binaries-0.2\node_modules/minicap-prebuilt/prebuilt/arm64-v8a/lib/a
ndroid-26/minicap.so -> /data/local/tmp/minicap.so

zlp 回复

看看你这个路径有没有 路径对应下的 minicap.so 文件有没有

linpengcheng 回复

仔细对比了下路径,发现我这边resource下的stf-binaries-master要改成stf-binaries-0.2才不会报那个错误。。。
然后这个解决后又报另外个错,atx-server地址没填错可以ping通:

2018/12/04 14:27:42 [INFO]main.go:79: download from https://github-mirror.open.n
etease.com/openatx/atx-agent/releases/download/0.4.8/atx-agent_0.4.8_linux_armv6
.tar.gz
2018/12/04 14:27:42 [WARN]main.go:295: install atx-agent failed: server returned
502 Bad Gateway
2018/12/04 14:27:42 [INFO]main.go:418: Init error: 39110be: server returned 502
Bad Gateway

zlp 回复

https://github-mirror.open.netease.com 这个地址已经挂了 到main.go换成吧GITHUB_MIRROR换成

GITHUB_MIRROR = "https://github.com"

然后 你下载的时候可能需要***才能下下来

zlp 回复

已经重新提交了一次 你重新下载u2init 再操作一下应该就好了

go get -v -u github.com/openatx/u2init

cd go/src/github.com/openatx/u2init

./init-resources.sh

go build

./u2init --server 10.0.32.8:8000 #换成你自己的atx-aerver Ip:port
linpengcheng 回复

换成GITHUB_MIRROR = "https://github.comatx-agent放在resource目录下面了。"这个后他自己下不下来,我手动下下来重命名成

第一次使用正常,然后拔掉数据线再插上,就报这个错误了。。。
有点奇怪,这个手机的atx-agent应该已经装过了,为啥还需要重新下载安装= =

2018/12/04 15:07:08 [INFO]main.go:414: Device 39110be came online
2018/12/04 15:07:08 [INFO]main.go:416: 39110be Init device
2018/12/04 15:07:08 [INFO]main.go:275: product model: MIX 2
2018/12/04 15:07:08 [INFO]main.go:280: Process minicap and minitouch
2018/12/04 15:07:08 [INFO]main.go:285: Process atx-agent
2018/12/04 15:07:09 [INFO]main.go:128: atx-agent /info not responding
2018/12/04 15:07:09 [INFO]main.go:78: latest agent version 0.4.8
2018/12/04 15:07:09 [INFO]main.go:79: download from https://github.com/openatx/a
tx-agent/releases/download/0.4.8/atx-agent_0.4.8_linux_armv6.tar.gz
2018/12/04 15:07:09 [INFO]main.go:86: Use cached resource
2018/12/04 15:07:09 [WARN]main.go:295: install atx-agent failed: open targz: rea
ding file in tar archive: file already exists: C:\Users\leping.zhao\go\src\githu
b.com\openatx\u2init\resources\atx-agent-armv6\LICENSE
2018/12/04 15:07:09 [INFO]main.go:418: Init error: 39110be: open targz: reading
file in tar archive: file already exists: C:\Users\leping.zhao\go\src\github.com
\openatx\u2init\resources\atx-agent-armv6\LICENSE

zlp 回复

没有下载 只是解压的时候发现文件已存在的报错

把这个下面三行注释掉就好了

或者你重装U2init 我已经把修改好的提交pr 通过了

linpengcheng 回复

谢谢,注释掉之后可以正常运行了~
另外还有个问题:
U2init里面agent和apk的版本好像是写死的,这个和执行python -m uiautomator2时候版本不一致,会导致反复替换版本,是不是需要处理一下

zlp 回复

uiautomator2也是写死的啊

八个鸭鹿 回复

我的小米4,就是点了也安装失败咋整?

大大国 回复

开发者选项里看看是不是要设置一些东西

linpengcheng 回复

需要设置啥东西?该开的都开了,小米4,已经出现那个安装界面了,点击安装就force stop了

linpengcheng 回复

问问,您这个版本是最新版的是吗?

大大国 回复

你可以先手动init一下

这样插拔的是不是不能满足,比如我的服务器部署在其他机器上,然后把手机插入到自己的电脑上就不行了吧

大大国 回复

这个u2init就是自动连atx-server的一个东西 你在任何电脑上起了之后,就往这台电脑上插安卓设备就行了

zlp 回复

你下载的内容是怎么下的?我怎么打不开页面,要***吗?

楼主那两个APP去哪里下载,链接好像有点问题

乱斗东 回复

开个***再试试看

我手动修改main.go文件里atx-agent版为0.5.4安装成功后可以用了, 但是发现如果设备没有WIFI了,就无法被管理了?
公司网络不是很好WIFI时有时无,能支持USB连接吗?怎么配置?

Alisa 回复

如果是单个设备 可以直接通过u2.connect('serial')来进行连接 但是想接入到atx-server 目前只能通过无线
貌似是这样的

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up