本次安装红框部分
在这里插入图片描述

前提条件:
CentOS8已配置STF环境

CentOS7安装STF,Docker版本
Windows查看adb版本

C:\Users\shenyf>adb --version
Android Debug Bridge version 1.0.41
Version 31.0.3-7562133
Installed as D:\android-sdk-windows\platform-tools\adb.exe

方式1:STF服务上连接手机

只要把打开调试的手机插在电脑上就可以了

方式2:STF服务上连接其它电脑上的手机

1、在windows机器上运行启动adb server并对外暴露5037端口

启动报错:找下面问题1

ADB 低版本执行(1.0.32版本以下)

adb -a -P 5037 fork-server server 

ADB 高版本执行(1.0.32版本以上)

adb nodaemon server -a -P 5037

2、在 STF 服务电脑终端上执行如下命令, - adb host 后跟的是被连接电脑 IP,其它 IP 都为 STF 服务电脑 IP

stf provider --name 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 192.168.31.15 --storage-url http://192.168.31.15:7100/ --adb-host 192.168.10.160 --adb-port 5037 --vnc-initial-size 720x1280 --allow-remote  

上面都运行成功了,就可以在网页上看到连接的手机了,还有就是在手机浏览器中也是可以正常使用的

方式3:STF(Docker版)连接手机

只要把打开调试的手机插在电脑上就可以了

方式4:STF(Docker版)连接其它电脑上的手机

1、在windows机器上运行启动adb server并对外暴露5037端口

启动报错:找下面问题1

ADB 低版本执行(1.0.32版本以下)

adb -a -P 5037 fork-server server 

ADB 高版本执行(1.0.32版本以上)

adb nodaemon server -a -P 5037

2、在 STF 服务电脑终端查看出stf的docker进程号(stf必须为运行中)

[root@bogon ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
f349984bf935        openstf/stf         "stf local --publi..."   16 hours ago        Up 6 seconds                            stf
3b7be288d1ff        sorccu/adb:latest   "/sbin/tini -- adb..."   16 hours ago        Up 48 minutes                           adbd
a4bfb45049e4        rethinkdb           "rethinkdb --bind ..."   16 hours ago        Up 48 minutes                           rethinkdb

进入docker容器内

[root@bogon ~]# docker exec -it f349984bf935 /bin/sh

在这个容器内部运行下面的命令,运行stf服务

$ stf local --public-ip 192.168.111.129 --allow-remote

3.在 STF 服务电脑终端,在容器内部,通过adb host加载windows主机上的设备:
当不知道命令如何写的时候,从上面运行STF服务里查找日志里面有provider的一行,可以比照出内容怎么写
在这里插入图片描述
将上面复制下来

provider --name bogon --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.111.129 --storage-url http://localhost:7100/ --adb-host 127.0.0.1 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote

修改上面命令,查看Windows电脑ip地址,替换到–adb-host后面;命令执行过程中需要手动在手机端点一下【同意安装STFService】

如果ip地址错误会报错,找问题2
其他错误,找问题3

stf provider --name bogon --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.111.129 --storage-url http://localhost:7100/ --adb-host 192.168.10.160 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote

在docker容器中使用Ctrl+D即可退出容器,但是这样会让容器停止运行。
如果想退出容器但又不想让容器停止,使用Ctrl+P+Q即可

完成

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果docker stop stf,下次重启,重新执行下面的命令

首先启动adb server并对外暴露5037端口

[root@bogon ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
f349984bf935        openstf/stf         "stf local --publi..."   20 hours ago        Exited (0) 7 minutes ago                             stf
3b7be288d1ff        sorccu/adb:latest   "/sbin/tini -- adb..."   20 hours ago        Up 4 hours                                           adbd
a4bfb45049e4        rethinkdb           "rethinkdb --bind ..."   20 hours ago        Up 4 hours                                           rethinkdb

[root@bogon ~]# docker start f349984bf935
f349984bf935

[root@bogon ~]# docker exec -it f349984bf935 /bin/sh
$ stf provider --name bogon --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.111.129 --storage-url http://localhost:7100/ --adb-host 192.168.10.160 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote

遇到问题1

C:\Users\shenyf>adb devices
List of devices attached
P7CDU1xx29xx8778        device


C:\Users\shenyf>adb nodaemon server -a -P 5037
adb F 11-12 09:56:30 82508 76496 main.cpp:160] could not install *smartsocket* listener: cannot bind to 0.0.0.0:5037: 閫氬父姣忎釜濂楁帴瀛楀湴鍧€(鍗忚/缃戠粶鍦板潃/绔彛)鍙厑璁镐娇鐢ㄤ竴娆°€?(10048)

解决办法:遇到弹窗点击允许

C:\Users\shenyf>adb kill-server

C:\Users\shenyf>adb nodaemon server -a -P 5037
adb I 11-12 10:07:04 80976 82508 auth.cpp:417] adb_auth_init...
adb I 11-12 10:07:04 80976 82508 auth.cpp:152] loaded new key from 'C:\Users\shenyf\.android\adbkey' with fingerprint 9C2720CF739665AC55237E07DA23A3DE002FB9275DD1044106B23F59E1FA892D
adb I 11-12 10:07:04 80976 82032 transport.cpp:333] P7CDU1xx29xx8778: read thread spawning
adb I 11-12 10:07:04 80976  6436 transport.cpp:305] P7CDU1xx29xx8778: write thread spawning
adb I 11-12 10:07:04 80976 82508 transport.cpp:1596] fetching keys for transport P7CDU1xx29xx8778
adb I 11-12 10:07:04 80976 82508 auth.cpp:469] Calling send_auth_response
adb I 11-12 10:07:04 80976 82508 adb.cpp:175] P7CDU1xx29xx8778: offline

遇到问题2

$ stf provider --name bogon --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.111.129 --storage-url http://localhost:7100/ --adb-host 192.168.111.1 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
2021-11-12T02:20:49.400Z INF/provider 242 [*] Subscribing to permanent channel "g0OY50XgThizL0Ce0pjDCQ=="
2021-11-12T02:20:49.451Z INF/provider 242 [*] Sending output to "tcp://127.0.0.1:7116"
2021-11-12T02:20:49.455Z INF/provider 242 [*] Receiving input from "tcp://127.0.0.1:7114"
Unhandled rejection Error: connect ETIMEDOUT 192.168.111.1:5037
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)

解决办法
win+r打开黑窗口

1、如果本机连接的是无线网卡,就找无线局域网适配器 WLAN的IPv4 地址
2、如果本机连接的是网线网卡,就找本地连接的IPv4 地址

C:\Users\shenyf>ipconfig

Windows IP 配置


无线局域网适配器 本地连接* 4:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
   
无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . : GE4
   本地链接 IPv6 地址. . . . . . . . : fe80::xxxx:xxxx:xxxx:ce4e%6
   IPv4 地址 . . . . . . . . . . . . : 192.168.10.160
   子网掩码  . . . . . . . . . . . . : 255.255.254.0
   默认网关. . . . . . . . . . . . . : 192.168.10.1

遇到问题3

2021-11-12T02:25:38.578Z FTL/device 426 [P7CDU1xx29xx8778] Setup had an error Error: /data/local/tmp/STFService.apk could not be installed [INSTALL_FAILED_ABORTED: User rejected permissions]
    at /app/node_modules/adbkit/lib/adb/command/host-transport/install.js:28:23
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
2021-11-12T02:25:38.578Z FTL/util:lifecycle 426 [P7CDU1xx29xx8778] Shutting down due to fatal error
2021-11-12T02:25:38.603Z INF/provider 262 [*] Cleaning up device worker "P7CDU1xx29xx8778"
2021-11-12T02:25:38.603Z ERR/provider 262 [*] Device worker "P7CDU1xx29xx8778" died with code 1

解决办法:查看手机是否弹窗,手动安装
原因:是无法安装STFService.apk
在这里插入图片描述

stf 帮助文档

[root@bogon ~]# docker exec -it f349984bf935 /bin/sh
$ stf -h
命令描述
api启动一个API单元。
app启动一个应用程序单元。
auth-ldap启动LDAP验证单元。
auth-mock启动一个接受任何用户的模拟身份验证单元。
auth-oauth2启动OAuth 2.0身份验证单元。
auth-openid启动OpenID身份验证单元。
auth-saml2启动SAML2.0身份验证单元。
groups-engine起动发动机单元。
doctor诊断安装中的潜在问题
local [serial…]启动一个完整的本地开发环境。
log-rethinkdb启动数据库日志单元。
migrate将数据库迁移到最新版本。
notify-hipchat启动HipChat通知程序单元。
notify-slack启动松弛通知程序单元。
processor [name]启动处理器单元。
provider [serial…]启动一个提供者单元。
reaper [name]启动收割装置。
storage-plugin-apk启动APK存储插件单元。
storage-plugin-image启动图像存储插件单元。
storage-s3启动一个S3存储单元。
storage-temp启动一个临时存储单元。
triproxy [name]启动一个triproxy装置。
websocket启动一个websocket单元。

stf provider帮助文档

[root@bogon ~]# docker exec -it f349984bf935 /bin/sh
$ stf provider --help
命令描述
-h, --help显示帮助
-V, --version显示版本
--adb-hostADB服务器主机。默认:127.0.0.1
--adb-portADB服务器端口。默认:5037
--allow-remote, -RSTF中是否允许远程设备。非常不推荐,因为亚洲开发银行方面几乎令人难以置信的缓慢和重复的设备问题,在本地使用时,同时连接电缆。[boolean]
--boot-complete-timeout在设备安装期间等待启动完成的时间。默认:60000
--cleanup尝试通过卸载应用程序、重置帐户和清空缓存来重置设备。目前做得并不完美。与--no-cleanup否定。默认值:true
--connect-push, -p设备端要连接的ZeroMQ PULL端点。[array][必填]
--connect-sub, -s设备端要连接的ZeroMQ PUB端点。[array][必填]
--connect-url-patternadb connect使用的URL模式。[string] [默认: “${publicIp}:${publicPort}”]
--group-timeout, -t自动释放未激活设备的超时时间(以秒为单位)。 [number] [默认: 900]
--heartbeat-interval心跳消息的发送间隔以毫秒为单位。[number] [默认: 10000]
--lock-rotation在使用设备时是否锁定旋转。否则,由于敏感传感器会迅速或立即将其恢复到物理方向,改变设备方向可能并不总是有效。[boolean]
--max-port设备工作人员使用的最高端口号。[number] [默认: 7700]
--min-port设备工作人员使用的最低端口号[number] [默认: 7400]
--mute-master是否静音主卷。[choices: “always”, “inuse”, “never”] [默认: “never”]
--name, -n用于UI和/或日志输出的易于识别的名称。 [string] [默认: “bogon”]
--public-ip在url中使用的IP或主机名。[string] [默认: “192.168.111.129”]
--screen-jpeg-quality用于屏幕的JPG质量。[number] [默认: 80]
--screen-ping-interval发送ping消息以保持屏幕WebSocket活动的时间间隔。[number] [默认: 30000]
--screen-reset当用户释放设备时,返回主屏幕并重置屏幕旋转。与–no-screen-reset否定。[boolean] [默认: true]
--screen-ws-url-pattern用于屏幕WebSocket的URL模式。[string] [默认: “ws://${publicIp}:${publicPort}”]
--storage-url, -r存储单元的URL。[string] [必填]
--vnc-initial-size用于实验VNC服务器的初始大小。[string] [默认: “600x800”]

每个选项都可以用环境变量覆盖,方法是将选项转换为大写,用下划线替换破折号,并将其前缀为STF_PROVIDER_ (e.g. STF_PROVIDER_NAME).

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐