由于调试设备紧张,一直想使用远程调试的方法,之前一直使用ssh别人的电脑,不方便的是安装完成后,要跑过去操作设备.偶然接触STF后,觉得非常好用,想着自己搭建一个STF
STF相当于一个web应用,电脑连接Android设备后,通过STF把设备的屏幕投射到搭建的网页上,在其他电脑进入宿主web应用后,可以用鼠标操作屏幕.并且把adb分享了出去,通过adb connect ip的方式可以远程安装应用,查看log等,全部在网页操作,非常方便.高端点的甚至可以搭建集群,同时控制多个设备,或者进行集中测试.
一开始尝试的方法是本地搭建,但是由于网络原因npm很多工具都无法下载,后来发现可以使用docker搭建,非常的方便快捷.之前并没有接触docker,搜集了资料后理解了docker是一个应用容器引擎,与虚拟机类似.可以在docker环境中使用其他人发布的应用或者依赖包,不用自己重新搭建.DOCKER
参考的资料连接是【Docker】搭建OpenSTF
下面是用到的docker命令
docker images : 查看镜像(我理解的是已经安装的应用)
docker ps -a : 查看容器(我理解的是已经create的应用,但是还是分up--激活状态,exit--停止状态)
docker start + CONTAINER ID : 启动容器
docker stop + CONTAINER ID : 停止容器
docker rm + CONTAINER ID : 删除容器 激活中的加 -f 参数 强制删除
搭建十分容易,但是真正run起来我遇到了下面的问题:
create adbd 应用后应用直接进入exit状态 : 解决办法是adb kill-server
查看找到了设备,状态先是prepare 然后过了几秒又 disconnect了 : 同上,在保证设备开发者模式打开后可以连接到电脑后,需要kill-server,然后重新激活adbd容器(多试几次,而且要保证Android设备可以连接到电脑).我理解的是adb无法同时由两个应用占有.(前辈电脑可以,我的不行)
localhost:7100访问不了 : docker run -d --name stf --net host openstf/stf stf local --public-ip (本机ip) run stf的时候需要注意ip的填写,虚拟机需要打开网络桥接模式
还存在的问题:
1,adb 不稳定,容易断开
2,宿主和stf无法同时使用adb
3,我的小米没法连上,试过华为的可以,呵呵