以前觉得STF这玩意不太好搭建,过程太复杂。现在发现这玩意还是很好用的。
试想一下,如果公司的设备有限,有的人要用一下,只是看一个东西,借走了设备很久不还。
有的时候开发在别的楼层,想看个东西。或者跟你一起重现一下bug. 那么得跑来跑去的。 有没有办法共享一下屏幕?让他不需要浪费在路上,或者占用设备资源。 STF就可以解决这个问题。
什么是OpenSTF? OpenSTF是一个手机设备管理平台,可以对手机进行远程管理、调试、远程手机桌面监控等操作。这个系统类似于目前很流行的云测服务比如Testin,虽然网页上提供的设备很像模拟器中的设备,但是实际上都是真机。
OpenSTF是使用nodejs和angularjs开发,遵循apache licene2.0开源协议,用户可以对源码进行修改发布。 STF把所有的手机都连接到一台电脑,只要其他电脑和这台电脑处于同一个局域网下(公司内部一般都是处于一个局域网下),那么其他电脑就可以通过浏览器输入地址,访问这电脑所连接的所有设备。并且可以上面进行操纵。 OpenSTF的功能 1、 在Web上支持管理上百个android设备。 2、 支持Android多个版本(2.3.3 ~ 8.0),而且不需要root。 3、 实时屏幕操作和显示。 4、 支持adb connnect远程连接调试。 5、 可以从PC机键盘输入到远程的android设备中。 6、 安装卸载APK。 7、 android设备信息的展示(如:网络状态、MIME、android版本、手机型号等等)。 8、 远程开关机、远程开关WIFI、截屏、LogCat等等。
OK, 我们来体验一把。这里以mac电脑为例。 安装,不建议用docker来弄,这个还不是很成熟,我之前一直想用这种方式,结果卡住了很久。 首先你电脑上要装好node, 以及android平台。 两条命令可以搞定。
brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config
然后安装就可以了:
npm install -g stf
安装过程可能会报这样的错。
Failed at the bufferutil@1.3.0 install script
这个是因为node版本过高,需要装node8 然后执行:
brew install node@8If you need to have node@8 first in your PATH run:
echo 'export PATH="/usr/local/opt/node@8/bin:$PATH"' >> ~/.bash_profile
然后查看一下node的版本号:
andersons-iMac:~ anderson$ node -v
v8.16.0
stf使用的是RethinkDB数据库,所以在启动stf前需要先启动RethinkDB,启动RethinkDB很简单,只需要执行以下命令:
rethinkdb
RethinkDB启动后,新建终端,执行以下命令:
stf local
如果想让其他机器连接到stf需要加上 --public-ip
stf local --public-ip <本机的IP地址>
最后输入http://localhost:7100或者 http://<ip地址>:7100 如果能成功访问,则可以实现设备的远程操作啦! 随便弄个账号登陆 打开页面是这样的:
当前连接的手机会高亮,断线的会灰。 可以看到链接的各个手机信息以及用户信息
选择一台连接的手机,就可以在电脑上操控手机了,手机上操纵,也可以投到电脑上。
如果需要安装,直接将安装包拖入里面就可以了。 可以看到安装包的信息,也可以方便截图,获取log,电脑上快捷操作手机
如果手机都接在你的电脑上也就是主电脑上,别人登陆跟你一样的账号,就可以看到和操纵当前你手机的屏幕,如果用不同的账号,他只能看到和操纵非busy手机。
如果想其他人的手机也连接到你的系统里面来,则可以 在你的电脑上 其他环境暴露接口:
adb -a -P 5037 fork-server server
启动stf服务
stf local --public-ip your ip --allow-remote
别人的电脑上也要启动:
adb -a -P 5037 fork-server server
执行下述命令【其中127.0.0.1可换成实际你的电脑IP】:
stf provider --name mikezhoudeMac-mini.local --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 20000 --public-ip 172.17.9.49 --storage-url http://localhost:7100/ --adb-host (对方电脑IP) --adb-port 5037 --vnc-initial-size 600x800 --allow-remote
使用过程中的感受,手机必须得能连接adb的,想vivo,oppo等就比较难搞。 截图很方面,我能截图UI和抓的API,用个录屏工具,还可以录制视频。 安装时候,往里面一拖就可以了。 有一个不太好的地方,就是用着用着,它莫名其妙给你把app删除了。目前还没找到原因。