最近由于工作需要,异地的研发同学需要远程连接手机进行bug确认、调试等,所以需要安装STF工具完成此项需求。
首先我在windows10上成功搭建并提供了使用,而后为了更好的提供这项服务,申请了虚拟机在CentOS7上也成功搭建并提供了使用。下面将我的安装、部署、使用的步骤详细说明一下,希望有此需求的朋友看到我这篇分享后,能快速搭建使用。
啰嗦几句:
开始准备STF的时候,google、百度一查,安装此工具需要安装很多依赖库、包等,不仅要一个个下载安装,由于操作系统、内核版本的不同,安装依赖包的时候可能还需要安装其他依赖包,就算费了九牛二五之力都安装成功,启动的时候又要先启动数据库、adb、stf,可能又会遇到很多问题。所以我放弃了这种方法,想着是不是还有其他简单易用的方法呢。
之后就看了Docker安装STF这种方式,Docker(自行去了解一下)的安装和部署在windows10、CentOS7下都是很easy的,也比较傻瓜。接下来就是安装部署STF,一查还是要docker pull各种镜像,然后启动,还是一样费事。但是程序猿的分享精神真是很“伟大”的一件事情,在github上我找到了一个分享,简单修改一下配置文件,就可以直接用一个命令来安装部署以及启动STF,并能在浏览器端开始使用。再次很感谢这个上传者https://github.com/nikosch86/stf-poc。
下面开始完整的安装部署、启动使用的流程:
Windows10篇
1. 在Docker官方网站下载docker for windows10的安装包,傻瓜安装(会自动开启Hyper-V服务,windows10自建一个虚拟机作为docker的服务端),成功安装后,开启docker服务
2. 在这里https://github.com/nikosch86/stf-poc下载stf-poc-master文件夹到docker服务所在机器上,要做的修改如下:
1) .env文件:将ip改成docker服务所在机器的ip
2) docker-compose.yml文件:两个地方
adb配置模块:将 - /dev/bus/usb:/dev/bus/usb,改成-D:/dockerdisk/dev/bus/usb:/dev/bus/usb(D:/dockerdisk这个位置随便写,只要是windows上的地址就行,因为连接手机时要使用wifi方式,所以地址可以随便写)
stf-provider配置模块:command: stf provider --name ....,在其最后添加--allow-remote允许远程访问。
3)配置好后,win+R打开cmd命令行方式,需要在stf-poc-master文件夹目录下进行,可参考readme。执行docker-compose up -d --build,出现下述展示,说明启动成功
Starting stf-poc-master_adb_1 ... done
Starting stf-poc-master_storage-temp_1 ... done
Starting stf-poc-master_auth_1 ... done
Starting stf-poc-master_triproxy_1 ... done
Starting stf-poc-master_rethinkdb_1 ... done
Starting stf-poc-master_dev-triproxy_1 ... done
Starting stf-poc-master_storage-plugin-image_1 ... done
Starting stf-poc-master_storage-plugin-apk_1 ... done
Starting stf-poc-master_provider_1 ... done
Starting stf-poc-master_migrate_1 ... done
Starting stf-poc-master_processor_1 ... done
Starting stf-poc-master_websocket_1 ... done
Starting stf-poc-master_reaper_1 ... done
Starting stf-poc-master_api_1 ... done
Starting stf-poc-master_app_1 ... done
Starting stf-poc-master_nginx_1 ... done
3. 在浏览器中输入ip,回车,提示登陆STF,就可以看到STF界面了。
CentsOS7篇
(CentOS一定是CentOS7,内核版本是3.10.*)以下是官方网站的安装步骤:
1. 安装所依赖的包,一般都安装了,检查一下即可
yum install -y yum-utils device-mapper-persistent-data lvm2
2. 配置the stable repository: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.可选项,默认禁用(我就是禁用,没做修改)
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
4. 下载安装docker:yum install docker-ce or yum install docker-ce-版本号
5. 启动docker:systemctl start docker
6. 安装docker-compose:curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose //赋予其可执行权限
7. 将gitbub上他人分享的stf小工具下载到服务器上,修改相应配置文件
启动前按readme修改文件
1) 修改.env中的ip、password,为本机的ip,password随意写
2) 修改docker-compose.yml:在 command: stf provider这一行最后 添加--allow-remote
8.pull镜像并启动STF:docker-compose up -d --build(需要在stf-poc-master文件夹目录下进行,可参考readme)
9.启动成功后,去浏览器中输入ip,回车,就能看到STF登陆界面了
使用wifi方式连接手机
windows10、CentOS7均可使用下述步骤,使用wifi方式连接手机(由于docker中的adb识别不到物理设备usb连接的手机):
1.在windows笔记本上,使用USB方式连接手机,adb devices可以看到连接的手机
2.在windows笔记本上,在cmd中,执行adb tcpip 5555 ///这个命令可以将手机的adb程序以wifi的模式再启动,如果看到 restarting in TCP mode port: 5555,则启动成功。
3.执行命令adb connect <手机ip>,返回“connected to <手机ip>:5555”后,拔掉数据线
4.进入docker中,首先找到adb的容器ID,执行命令
【windows10】docker ps -a|findstr adb
【CentOS】docker ps -a|grep adb
d45381f290fe sorccu/adb:latest "/sbin/tini -- adb -?" 18 hours ago Up 2 hours 5037/tcp stf-poc-master_adb_1
【windows10、CentOS】docker exec -it d45381f290fe sh
/ # adb devices
List of devices attached
/ # adb connect 10.7.44.55
connected to 10.7.44.55:5555
/ # adb devices
List of devices attached
10.7.44.55:5555 device
连接手机过程中,需要在手机中安装STFService.apk,此时有的手机可能失败,通过provider镜像去查看log,docker logs provider的容器ID。记得每次连接时,手机端需要允许USB调试,即使去点击“允许”
备注:如果连接失败,重试adb tcpip 5555,adb connect...
手机离线后重新连接。
手机连接后,浏览器中就能看到已连接的手机。具体STF怎么使用,大家自行google或者官网查看。
备注:小米手机连接时,需要登陆小米账号后,再去做下述步骤。