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

狂师 · 2017年03月15日 · 最后由 小啄 回复于 2019年05月14日 · 6675 次阅读

一、背景

看到之前曾有人发贴,贴名【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 回复

改成别的了

启动参数改了?

0x88 回复

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

狂师 回复

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

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

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

陈恒捷 回复

ok

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

codeskyblue 回复

麻烦问下改成什么了?

张俊明 回复

我也不知道

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

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

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

最近有关于 STF 的分享吗~

狂师 #15 · 2017年04月23日 Author
wangpengfei100 回复

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

狂师 #16 · 2017年04月23日 Author
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 端口设置错误了。

29楼 已删除

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

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