Open-STF的使用

可以分为三种情况:

1. 只有一个Master主机的情况,即只有一台装了STF和ADB的主机,连接了一些设备,通过访问这个主机来管理这些设备。

2. 一个Master主机+若干个SLAVE的情况,Master主机安装STF和ADB,SLAVE支持ADB,安装/未安装STF:

    2.1 SLVAE主机不支持STF

    2.2 SLAVE主机支持STF

一、只有一个Master主机的情况:

1. 安装后首先要开启DB服务,直接运行即可:

rethinkdb

Open-STF的使用_第1张图片
rethinkdb服务启动

2. 启动STF服务:

如果只是简单的测试或者本地使用,直接运行 stf local即可

Open-STF的使用_第2张图片
stf local

这样的话你直接在浏览器中输入:http://localhost:7100/#!/devices 即可管理所有的设备。但是你无法在非本机的浏览器通过http://10.1.137.158:7100/#!/devices 的方式去访问,会直接跳转成:http://localhost:7100/auth/mock/。

如果想要能够实现远程访问就需要运行:

~ stf local --public-ip 10.1.137.158

后面是本机的IP地址,这样相当于把你的IP地址设置为一个公开可访问的(局域网内)。

下图是我用手机浏览器访问的界面(局域网):

Open-STF的使用_第3张图片
手机访问页面

二、一个Master主机+若干个SLAVE的情况

如果你需要管理的设备都比较集中,或者比较少,那么将这些设备都连接到这一个启用了STF服务的机器上,然后你通过浏览器来访问这个机器从而操作这些手机就可以了。接下来你的工作就只是想办法把这些设备都连接到这个机器上而已。

如果你的机器比较分散(公司的办公地点在北京和上海两个地方,都有设备需要管理)或者比较多,且希望能统一管理,就需要想更多的办法:

Master主机安装STF和ADB,SLAVE支持ADB,安装/未安装STF。

Master主机开启STF服务,SLAVE主机通过adb连接测试设备,SLAVE和Master主机之间建立连接,将所连接的测试设备桥接到Master主机上去,这样用户通过访问Master主机就可以访问所有的测试设备。测试设备具体所在的位置对于用户来说是透明的,都只是显示连接到了Master主机而已。

环境概况:

Linux 服务器,安装stf完整组件,支持android sdk,作为master节点。[IP:10.1.132.193]

MAC,安装stf(本例中并没有使用也没有启用),支持android sdk。[IP:10.1.137.158]

两台电脑网络互通。

Linux服务器自己连接的手机设备(WIFI连接):

Linux连接的手机

MAC连接的手机设备(USB连接):

Open-STF的使用_第4张图片
MAC连接的手机

1、Mac(10.1.137.158)上启动 adb server 并对外暴露 5037 端口执行:

    adb -a -P 5037 fork-server server

    但是如果adb版本比较高的话,就会提示reply fd for adb server to client communication not specified.用如下命令替换:

    adb nodaemon server -a

2、在Linux服务器(10.1.132.193)上启动stf服务

    rethinkdb

    stf local --public-ip 10.1.132.193 --allow-remote

3、通过配置 adb host 的方式和 MAC 主机互连

    在Master机器(Linux:10.1.132.193)上执行:

stf provider --name CentOS7.4-wangjing-109 --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 10.1.132.193 --storage-url http://localhost:7100/ --adb-host 10.1.137.158 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote

连接成功后,在SLAVE机器(Mac:10.1.137.158)上展示如下:

Open-STF的使用_第5张图片
SLAVE机器连接后的展示

在Master机器(Linux:10.1.132.193)上展示如下:

MASTER机器连接后的展示

红框部分就是连接到了SLAVE所连接的设备(目前是offline状态)。

从别的设备浏览器上访问的情况如下:

Open-STF的使用_第6张图片
访问STF系统界面

可以看到显示的Location是Master主机的名称,这时从SLAVE机器(Mac:10.1.137.158)上去adb devices也是没有了e115ac6d这个设备了。它的作用就是将所连接的设备通过自己这个桥梁连接到Master机器(Linux:10.1.132.193)上。


补充说明(上面没有SLAVE没有开启STF,相当于是没有装STF的情况。装有STF的还没有实践,先放在下面作参考)

上述操作行为,仅针对其它操作系统上没有安装stf,所以采用 adb host 的方式连上对应操作系统上的安卓设备,假如某此系统服务上已安装stf相应组件,

如:10.16.6.63_Liunx主机,安装了 stf,想将Liunx主机的安卓设备连接到主Master(MAC:172.17.9.49)平台上。

通过配置新的 provider 连上Liunx 主机上的设备:

在Liunx主机上启动 stf provider 【差异在于,不需要增加--adb-host】

stf provider --name mikezhoudeMac-mini.local --min-port 7400 --max-port 7700 --connect-sub tcp://172.17.9.49:7114 --connect-push tcp://172.17.9.49:7116 --group-timeout 20000 --public-ip 172.17.9.49 --storage-url http://172.17.9.49:7100/ --vnc-initial-size 600x800 --allow-remote







nohup stf local --public-ip 10.1.132.193 --allow-remote &


主要参考:

STF [STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍(该文的作者写了好几篇STF相关的文章,可以一并查看 https://testerhome.com/mikezhou)

stf 连接各操作系统上安卓设备的操作方法分享

六、使用

1. 远程控制

搭建好环境之后,这就是一台连接着N台Android手机的服务器了(这个服务器可能是放在你们公司某个神秘的地方,一般称为无线实验室),在上图的手机控制界面可以看到:

这时候,在你自己的电脑上(客户端),通过命令行输入adb connect 192.168.1.102:7401,就可以将自己的电脑连接到远程服务器上的手机真机,就好像手机是连接在自己电脑上一样,你可以在Android Studio中Android Device Monitor上看到手机硬件,可以直接打断点debug。

你可能感兴趣的:(Open-STF的使用)