本次安装红框部分
前提条件:
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-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
).
更多推荐
CentOS7/8之STF连接手机+Docker版
发布评论