栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

CentOS7/8之STF连接手机+Docker版

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CentOS7/8之STF连接手机+Docker版

前提条件:
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即可

完成


如果docker stop stf,下次重启,重新执行下面的命令
[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

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).

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号