搭建自己的设备云平台

以前觉得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运行

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删除了。目前还没找到原因。

本文分享自微信公众号 - python爱好部落(lovesweet2018)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏快乐学Python

Vue 终级前后端分离方案 —— Vue 使用 axios 访问 API

有很多时候你在构建应用时需要访问一个 API 并展示其数据。做这件事的方法有好几种,而使用基于 promise 的 HTTP 客户端 axios 则是其中非常流...

18530
来自专栏灵魂画师牧码

画解算法 24-两两交换链表中的节点

https://leetcode-cn.com/problems/swap-nodes-in-pairs/

9230
来自专栏前端下午茶

《你不知道的JavaScript》 (中) 阅读摘要

本书属于基础类书籍,会有比较多的基础知识,所以这里仅记录平常不怎么容易注意到的知识点,不会全记,供大家和自己翻阅;

8610
来自专栏前端下午茶

[译] 网速敏感的视频延迟加载方案

一个大视频的背景,如果做的好,会是一个绝佳的体验!但是,在首页添加一个视频并不仅仅是随便找个人,然后加个 25mb 的视频,那会让你的所有的性能优化都付之一炬。

11230
来自专栏力哥聊运维与云计算

网卡passthrough在kvm虚拟机的配置方法

04:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controll...

21540
来自专栏宜信技术实践

UAVStack之微服务计算平台

微服务计算平台,即MicroService Computing Platform,简称MSCP,应用微智能思想提供了一套基于微服务架构的计算平台。

9930
来自专栏凯哥Java

hashMap怎么保证hash一致性的

学Java的都知道hashMap的底层是“链表散列”的数据结构也也可以说是hash表。在put的实话先根据key的hashcode重新计算hash值的,而我们又...

17450
来自专栏凯哥Java

jeecg-boot怎么导入到本地运行?

因为jeecg-boot使用的是前后端分离的。前端使用的是VUE。所以需要按照VUE环境。

74040
来自专栏FinGet前端之路

JavaScript从初级往高级走系列————异步

上面这个例子中,当执行了alert(1),如果用户不点击确定按钮,console.log(2)是不会执行的。

7520
来自专栏前端下午茶

使用API自动生成工具优化前端工作流

在工作中,我们的前端工作流一般开始于前后端协商好Api文档之后,再针对这个Api文档做mock模拟数据,然后用做好的mock进行开发,后端开发完毕之后再改一下A...

19530

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励