一、STF简介
STF(Smartphone Test Farm)是一个手机设备管理平台,可以对手机进行远程管理、调试、远程手机桌面监控等操作。
二、安装docker环境
参考docker官方文档,这里就不再赘述:
https://docs.docker.com/install/linux/docker-ce/centos/
三、拉取相关镜像
STF镜像
# sudo docker pull devicefarmer/stf:latest
Android adb镜像
# sudo docker pull sorccu/adb:latest
rethinkdb镜像
# sudo docker pull rethinkdb:latest
ambassador镜像
# sudo docker pull openstf/ambassador:latest
nginx代理镜像
# sudo docker pull nginx:latest
四、创建容器实例
在CentOS7中运行docker容器,挂载的本地目录在容器中没有执行权限,原因是CentOS7中的安全模块selinux禁用了相关权限。
关闭selinux
# su -c "setenforce 0"
启动容器
启动rethinkdb数据库
# sudo docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
启动adb service
# sudo docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
启动stf(最后的ip地址参数为本机的局域网ip地址)
# sudo docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.1.100(本机IP)
查看启动的docker容器
# sudo docker ps -a
五、关闭防火墙 查看stf服务
关闭系统防火墙
# systemctl stop firewalld.service
打开浏览器输入 192.168.1.100:7100(本机IP+host)访问stf服务
六、ADB connect
安装adbkit
$ sudo npm i-g adbkit
启动usb转tcp服务
$ adbkit usb-device-to-tcp-p$port$serial
在另一台装有adb的机器上进行设备的连接(假设启动adbkit服务的机器ip是10.0.0.1 端口是15555)
$ adb connect10.0.0.1:15555
七、远程接入设备
PS:目前接入win10连接的手机设备还未调通,接入Linux连接的手机设备还未尝试,后面有空再研究
进入docker容器内
# docker exec -it 2ddadc259cb2 /bin/sh
启动 adb server 并对外暴露 5037 端口执行(目标电脑执行):
# adb -a -P 5037 fork-server server
但是如果adb版本比较高的话,就会提示reply fd for adb server to client communication not specified.用如下命令替换:
# adb nodaemon server -a
执行远程连接命令
# stf provider --name test --min-port 7400 --max-port 7700 --connect-sub tcp://10.200.130.101:7114 --connect-push tcp://10.200.130.101:7116 --group-timeout 20000 --public-ip http://10.200.130.101 --storage-url http://10.200.130.101:7100/ --adb-host 10.200.130.55 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote --screen-ws-url-pattern "ws://10.200.130.101:<%= publicPort %>/" (adb-host :目标电脑的IP)