最近手机需要放到实验室运行,想通过外部访问直接控制手机,而不需要到实验室里,费时费力。发现网上的开源项目stf,它可以搭建一个批量控制手机的web平台,目前只能运行在linux环境中,所以需要准备一台linux服务器
1. docker拉取镜像
docker pull openstf/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
docker pull openstf/ambassador:latest
docker pull nginx:latest
2. docker内部运行容器
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
docker run -d --name stf --net host openstf/stf stf local --public-ip 172.18.40.36(stf搭建的服务器IP)
访问目标网址172.18.40.36:7100,就可以通过web页面控制手机了
上面的操作是手机插在搭建stf的服务器上,其实更需要的是服务器启动stf服务,不同的手机插在其他的电脑上,依然能够通过网页控制手机。下面以windows为例。
首先windows电脑必须有adb,可以连接手机。输入指令
adb nodaemon server -a -P 5037
如果指令报错,先杀死服务,在重新输入命令
adb kill-server
注意:低版本可能输入 adb -a -P 5037 fork-server server 指令,没有尝试过
在stf服务器中配置adb host,来连接windows上的手机
1. 查看当前运行的镜像,找到stf的容器id
docker ps –a
2. 进入docker容器中
docker exec -it 9609ce2bf1e1 /bin/sh
3. 运行stf服务
stf local --public-ip 172.18.40.36 --allow-remote
4. 通过adb host 加载windows上的设备
从第三条命令的输出结果中找到provider, 复制整条命令,修改你的host ip。
stf provider --name mstb --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 172.18.40.36 --storage-url http://localhost:7100/ --adb-host 172.18.41.90 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
之后再输入网址,就可以操作本地电脑上的手机了。