前提条件:
CentOS8已配置STF环境
或
CentOS7安装STF,Docker版本
Windows查看adb版本
C:Usersshenyf>adb --version Android Debug Bridge version 1.0.41 Version 31.0.3-7562133 Installed as D:android-sdk-windowsplatform-toolsadb.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的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.在容器内部,通过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即可
[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:Usersshenyf>adb devices List of devices attached P7CDU1xx29xx8778 device C:Usersshenyf>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:Usersshenyf>adb kill-server C:Usersshenyf>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:Usersshenyf.androidadbkey' 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:Usersshenyf>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
[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单元。 |
[root@bogon ~]# docker exec -it f349984bf935 /bin/sh $ stf provider --help
| 命令 | 描述 |
|---|---|
| -h, --help | 显示帮助 |
| -V, --version | 显示版本 |
| --adb-host | ADB服务器主机。默认:127.0.0.1 |
| --adb-port | ADB服务器端口。默认:5037 |
| --allow-remote, -R | STF中是否允许远程设备。非常不推荐,因为亚洲开发银行方面几乎令人难以置信的缓慢和重复的设备问题,在本地使用时,同时连接电缆。[boolean] |
| --boot-complete-timeout | 在设备安装期间等待启动完成的时间。默认:60000 |
| --cleanup | 尝试通过卸载应用程序、重置帐户和清空缓存来重置设备。目前做得并不完美。与--no-cleanup否定。默认值:true |
| --connect-push, -p | 设备端要连接的ZeroMQ PULL端点。[array][必填] |
| --connect-sub, -s | 设备端要连接的ZeroMQ PUB端点。[array][必填] |
| --connect-url-pattern | adb 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).



