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

linpengcheng · 2018年07月31日 · 最后由 gradient30 回复于 2019年08月13日 · 7162 次阅读

还在为 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  ·  2018年07月31日

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 35 条回复 时间 点赞
codeskyblue ATX 群资金流公示 中提及了此贴 07月31日 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 目前只能通过无线
貌似是这样的

第2步:安装 u2init,go build 时 报错如下:

github.com/openatx/u2init/flashget

flashget/flashget.go:200:19: cannot use resp.Size (type func() int64) as type int64 in assignment

我直接注释掉了该文件的第200行代码,再 go build 就OK了


./u2init --server ip:8000
IP地址写本机的时候提示连接被拒绝,随便填写一个IP提示连接超时……

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册