记录自己之前部署时,遗留下来的问题,并且给自己点动力,部署过程都是在网上找到,也有排查问题时发现的,多多学习,多多总结,多多输出
为什么搭建STF,搭建stf,由于手机,太多了,并且,大家借来借去,导至,有时候根本找不到想要找的手机,而且,做适配测试的时候,一大堆手机,挨个看,很麻烦,毕竟懒惰是人类文明进步的真正动力
搭建docker ,win10的版本,我选择docker+Oracle VM VirtualBox , 选择Oracle VM VirtualBox没有选择VMware 原因有2点:
1、 首先VMware,需求Hyper-V开启,这个开启后,模拟器需求的vt就不再生效,导至模拟器卡顿,本人测试,常年用模拟器,没办法只能用VirtualBox
2、VMware USB设备连接 不太会,Oracle VM VirtualBox usb设备连接我觉得挺简单(Oracle VM VirtualBox使用usb设备也有很强的弊端)
docker windows部署
官网下载docker ,下载docker toolbox ,下载virtual BOX(virtual BOX 和VirtualBox Oracle VM VirtualBox Extension Pack)
安装步骤:
先安装docker ,一直下一步
再安装docker toolbox ,一直下一步
再安装 virtual BOX ,一直下一步
在安装VirtualBox Extension Pack ,一直下一步
再修改Docker Quickstart Terminal,右键快捷方式,目标处的配置:找到git的bash.exe 文件地址和Docker Toolbox 的start.sh
例如:"E:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker\Docker Toolbox\start.sh"
最后,如果双击Docker Quickstart Terminal 启动VirtualBox失败,修改C:\Program Files\Docker\Docker Toolbox\start.sh,里面 VBOX_MSI_INSTALL_PATH或者VBOX_INSTALL_PATH配置成环境变量(默认安装VirtualBox已经有了环境变量)
VirtualBox无界面启动
cmd 输入
docker info
docker-machine ip 可以获取虚拟机ip(一般为192.168.99.100)
添加VirtualBox的usb控制设备
双击VirtualBox后,点击default,后点击设置,选择下面的USB设备,选中usb1.1 控制器,点击usb+,选择添加已经连到usb的安卓设备,点击OK,需要重启default虚拟机
理论上,现在已经吧环境安装好了
现在可以用docker了
安装STF(从网上找到 安装启动步骤)
docker pull openstf/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
如果下载超时,可能是虚拟机,无法联网,需要修改VirtualBox配置(修改设置里面的网络,网卡1和网卡2的修改,修改完成后,需要重启)
下载成功后
启动 rethinkdb
docker run -d --name rethinkdb --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
启动成功后,访问http://192.168.99.100:8090/
启动 adbd
docker run -d --name adbd --privileged --net host sorccu/adb:latest
如果需要远程其他电脑的adb,则需要将远程电脑的adb,设置为中转服务
adb -a -P 5037 fork-server server ,将5037端口对外
然后docker exec adb connect ***.***.***.*** 5037
又或者使用stf连接 :
docker exec stf bash -c 'stf provider --name asd --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 100.104.65.135 --storage-url http://100.104.65.135:7100/ --adb-host xxxxxxx --adb-port 5037 --vnc-initial-size 540x960 --allow-remote'
启动成功后,docker exec adbd adb devices,(如果上面VirtualBox添加过了usb的设备,这里应该可以获取到设备信息)
启动 stf
docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.99.100
启动成功后,访问192.168.99.100:7100,就可以访问,(如果上面VirtualBox添加过了usb的设备,正常连接到设备,但是也需要将设备开启,开发者模式,并允许usb安装)
由于docker只能内网访问,所以如果需要外网访问,需要配合nginx
docker run -d —name stf—net host openstf/stf stf local —public-ip 外网ip
启动成功后,需要配置nginx,才能访问
同时,如果需要修改stf里面,进行二次开发,则需要将里面的stf1 /app里面的数据copy出来,然后在挂载回去
这样,就可以对stf进行二次开发,方便,快捷
安装nginx(从网上找到 安装启动步骤)
docker pull nginx:latest
docker run -d -p 80:80 --name nginx -v /e/nginx/conf:/etc/nginx/nginx.conf nginx
挂载到e盘的nginx配置
nginx 配置如下:(由于本人比较笨,不会使用nginx的批量的端口转发,所以只能一个一个端口转发,或者用其他的代理转发服务也可以,本人就只会nginx,0.0)
固定端口 :7100http,7110websocket,7400websocket,7401以后,所以的端口都可能是 为连接手机的端口websocket
websocket转发需要额外添加配置proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";
nginx上传的限制也需要开放 client_max_body_size 1G;(有些apk太大导至无法上传)
server {
listen 7110;
server_name localhost;
location / {
proxy_redirect off;
proxy_pass http://192.168.99.100:7110;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
server {
listen 7100;
server_name localhost;
location / {
proxy_redirect off;
proxy_pass http://192.168.99.100:7100;
client_max_body_size 1G;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
server {
listen 7400;
server_name localhost;
location / {
proxy_redirect off;
proxy_pass http://192.168.99.100:7400;
client_max_body_size 1G;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
全部配置完成后
访问 外网ip:7100,外网即可正常访问,如果发现连接的设备点连接,屏幕没有显示,但是截图,都是好的,可能是nginx转发端口加的不太对,F12看一下有没有报错,查看一下连接端口,补上nginx即可
VirtualBox的缺点就是,每次新加一台新手机都需要重启虚拟机,不然adb devices时看不到,所以需要尽量一次连接好了后,adb devices,能看到了,再启动stf
本文暂时只支持安卓手机,ios的我还在研究,二次开发的,也在研究,继续研究