STF [STF 手机设备管理平台] 连接其它操作系统上的安卓设备实操介绍

狂师 · March 15, 2017 · Last by 小啄 replied at May 14, 2019 · 7545 hits

一、背景

看到之前曾有人发贴,贴名【stf 连接各操作系统上安卓设备的操作方法分享】,介绍了一下,虽然说方法和理论都有,但下述评论中还是有很多人不知如何操作,特别是不知道stf provider命令如何使用,特此,提供具体的解决方法,当然本人注重结果导向,所以下述方法中,重点都是通过截图方法来展开,不涉及理论上的过多解释。

二、目的

  • 将没有安装stf组件电脑上连接的android设备,添加映射到装有stf平台服务的机器上 (可以看作Master-Slave主从关系)

三、环境前置

  • Mac 服务器,安装stf完整组件,作为master节点。[IP:172.17.9.49]
  • Windows,未安装stf,支持android sdk 。[IP:172.17.9.20]
  • Liunx,未安装stf,支持android sdk。[IP:10.16.6.63]
  • 三台电脑网络互通。

四、环境描述

下述截图仅供演示说明,其中,IP及端口划分因实际情况而定

  • Mac STF服务本机上连有的android设备:

  • Windows机器上连有的android设备:

  • Linux机器上连有的android设备(通过wifi模式连接):

五、实际操作

  • windows 上启动 adb server 并对外暴露 5037 端口

adb -a -P 5037 fork-server server

  • Linux 上启动adb server并对外暴露5037端口

adb -a -P 5037 fork-server server

  • 在Mac 上启动stf服务

stf local --public-ip 172.17.9.49 --allow-remote

如果不知道triproxy dev 具体的端口配置情况或者不知道stf provider命令如何写的同学,可以通过分析日志得出,如下红框标红的区域:

  • 通过配置 adb host 的方式连上 windows 主机上的设备

在Mac服务器上,执行下述命令【其中127.0.0.1可换成实际IP172.17.9.49】:

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 172.17.9.20 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote

Windows连接启动成功后的日志,如下所示:

  • 通过配置 adb host 的方式连上 liunx 主机上的设备

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 10.16.6.63 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote

Liunx连接启动成功后的日志,如下所示:

  • 连接成功后,Mac服务上接收到的日志

下述日志,说明windows上的安卓设备已经连接成功:

下述日志,说明liunx上的安卓设备已经连接成功:

六、Mac平台连接效果展示

七、补充说明

上述操作行为,仅针对其它操作系统上没有安装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

八、结束语

我只想说,NND,为啥这次感冒这么久没好!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 29 条回复 时间 点赞

祝感冒早日恢复

—— 来自TesterHome官方 安卓客户端

adb 最新版本1.0.36不支持adb fork-server,不知道为啥。

0x88 回复

改成别的了

启动参数改了?

狂师 #5 · March 16, 2017 作者
0x88 回复

首先确定是否真的不支持,如果是,如果非得采用adb fork-server,可切换为1.0.32版本

狂师 回复

肯定是确定的事啦,之前我发过这个问题都没人回我😂 而我又懒得去看adb的源码

写的不错,确实我当时写得有点仓促,有些地方说得不够清晰。

我把你的帖子链接加到我的正文里把,如果有同学不了解具体操作,可以直接到这里看。

狂师 #9 · March 17, 2017 作者
陈恒捷 回复

ok

给楼主点个赞,祝楼主感冒早日康复

codeskyblue 回复

麻烦问下改成什么了?

张俊明 回复

我也不知道

Linux 上启动adb server并对外暴露5037端口
adb -a -P 5037 fork-server server

执行这条命令,窗口会一直开启,关闭就会结束。
有什么办法可以让这条命令执行完后自动进入服务程序呢?

难道必须在其他的机器上也安装stf?
通过配置新的 provider 连上Liunx 主机上的设备

最近有关于STF的分享吗~

狂师 #15 · April 23, 2017 作者
wangpengfei100 回复

我原有贴子里,其中有三篇中介绍到了STF相关,含安装、改造、多操作系统设备连接,可以先去看一下,另外,论坛上其它的之前也有人发表过相关,如想了解,可先查阅。

狂师 #16 · April 23, 2017 作者
linkin 回复

可通过脚本的形式,把其封装成一个后台守护进程或服务,建议在启命令时,增加一个判断端口是否被占用的前置。

狂师 回复

狂师你的三篇帖子我都看了,提到的改造也学着实现了。最近没有人发新的分享出来。

狂师 回复

谢谢,刚接触linux,很多问题。

狂师 回复

adb是1.0.32版本的,输入windows 上启动 adb server,提示如下: 不知道要如何解决,请大神指教
reply fd for adb server to client communication not specified.
Android Debug Bridge version 1.0.32
Revision 0e9850346394-android

-a - directs adb to listen on all interfaces for a connection
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is r

楼主,我的master和slave都是mac机,但用了adb host的方式无法连上slave的机器,为啥呢?mac机器作为slave要用别的命令么?我试了命令:
stf provider --name "jingjing.local" --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --storage-url http://localhost:7100/ --public-ip 30.15.55.81 --min-port=35000 --max-port=40000 --heartbeat-interval 20000
但也报错

后来我试了在slave的机器上安装stf,启动stf provider

感觉提示的是有机器,但是不能提供给master,求解

有两个问题请知道的大佬能回答一些吗:
1、使用STF 连接其他操作系统的手机,不要求各个电脑设备在同一网段内吗?
2、 图中 IP:10.16.6.63 的linux机器 通过wifi模式连接 操作连接了一台 172.17.24.123:5000的Android设备,这两个ip不在同一个局域网中也可以通过wifi连接吗?,现在我这只能把电脑和手机切到同一个局域网中才可以实现wifi连接;
先谢过了!

我现在有三台设备A、B、C。A部署STF,B、C分别连接手机,现在只能B设备上的手机能连STF,或者C设备上的手机能连STF。有啥办法让他们同时连啊

df 回复

你stf服务上添加B和C设备的命令是什么?发出来看看

@yatouxingren @mikezhou 同问,provider 和 master 不需要处于同一局域网吗?

相比于在provider节点安装 stf 再去连接master,与不安装stf 直接用--adb-host 去连接master,有什么优点?

我再docker上启动的stf服务 出现 INF/provider 22257 [] Tracking devices
INF/provider 22257 [
] Found device "0123456789ABCDEF" (device)
INF/provider 22257 [*] Providing all 0 of 1 device(s); ignoring "0123456789ABCDEF"

chunyong 回复

请问你这问题解决了吗
我也遇到同样问题,一直没找到解决方法😭

999 回复

解决了,是因为sub 和 connect 端口设置错误了。

29Floor has been deleted

adb -a server nodaemon 设备总是显示 offine,而 adb devices 则显示 device,未找到原因

小啄 回复

问题已解决,使用 STF 提示的完整命令即可,网上的博客资料有些少了参数。
命令:
stf provider --name shandianjideiMac.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 900 --public-ip 192.168.3.153 --storage-url http://localhost:7100/ --adb-host 127.0.0.1 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote

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