使用Open STF创建Android设备场

移动流量的份额每年都在增加。 现代人是移动的,他更容易从自己的智能手机的屏幕上获取信息。 因此,移动应用程序的发展趋势。 在开发和测试时,访问各种设备非常重要,这样应用程序才能在各种智能手机型号上正确运行。 考虑用于访​​问设备的各种选项。

一种方法是移动云农场

三星开发:远程测试实验室
Firebase测试实验室
浏览器堆栈
AWS设备场
应用中心
酱料实验室

其中一些是免费的-设备数量有限,另一些则是付费的,设备数量众多。 通过它们,您可以远程访问真实的设备并跟踪设备上发生但未在仿真器上再现的错误。

另一种方法是创建自己的Android智能手机农场,这使得来自不同城市和国家/地区的员工可以连接到办公设备。 让我们看看如何通过Open STF项目创建自己的Android设备场。

在Ubuntu 18.04上安装:


更新apt-get:

sudo apt-get update 

安装OpenSTF的依赖项(Node.js,NPM,GraphicsMagick,ZeroMQ,协议缓冲区,yasm,pkg-config,adb)。

 sudo apt-get install nodejs npm graphicsmagick libzmq3-dev protobuf-compiler libprotobuf-dev yasm pkg-config android-tools-adb 

下载deb软件包RethinkDB(该软件包不可通过apt用于Ubuntu 18.04):

 wget https://github.com/srh/rethinkdb/releases/download/v2.3.6.srh.1/rethinkdb_2.3.6.srh.1.0bionic_amd64.deb sudo dpkg -i rethinkdb_2.3.6.srh.1.0bionic_amd64.deb 

安装OpenSTF:

 npm install -g stf 

如果在安装过程中出现错误,则npm无法访问/ usr / local / lib或/ usr / local / bin,然后提供对它们的访问:

 sudo chown -R $USER /usr/local/lib sudo chown -R $USER /usr/local/bin 

然后重启

 npm install -g stf 

在MacOS X上安装:


安装自制软件:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

下载并安装所有依赖项:

 brew install node rethinkdb graphicsmagick zeromq protobuf yasm pkg-config homebrew/cask/android-platform-tools 

如果在安装protobuf时发生以下错误:

 Error: An unexpected error occurred during the `brew link` step The formula built, but is not symlinked into /usr/local Permission denied @ dir_s_mkdir - /usr/local/Frameworks Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks 

然后,您需要创建/ usr / local / Frameworks文件夹并为其授予写权限:

 sudo mkdir /usr/local/Frameworks sudo chown $USER /usr/local/Frameworks 

安装OpenSTF:

 npm install -g stf 

Windows安装:


可以通过Cygwin实现,但未得到开发人员的正式支持。

发射


为了使OpenSTF正常工作,必须首先运行RethinkDB。

 rethinkdb 

下一步运行openstf本身

 stf local --public-ip <ip- > 

连接设备:


默认情况下,将移动设备连接到计算机时,OpenSTF独立检测并连接设备,而无需重新启动。

但是在Ubuntu中可能存在问题:

如果移动设备在openstf中不可见,并且以下消息显示在openstf日志中:

 Unhandled rejection Error: Illegal value for Message.Field .DeviceIntroductionMessage.status of type enum: undefined (not a valid enum value) 

并且adb devices命令产生以下输出:

 List of devices attached ??????? no permissions (verify udev rules); see [http://developer.android.com/tools/device.html] 

您将必须手动添加设备:

为此,运行

 lsusb 

并找到无法确定的设备。
举个例子

 Bus 001 Device 010: ID 2e04:c026 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 

USB设备ID由两部分组成-制造商ID(如上面的示例,ID的第一部分最多为':',2e04)和设备型号ID(c026)。

接下来,运行以下命令,根据错误找到的设备的ID填写参数ATTR {idVendor}和ATTR {idProduct}:

 echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2e04", ATTR{idProduct}=="c026", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules sudo udevadm control --reload-rules sudo udevadm trigger --verbose --action=add --subsystem-match=usb 

值得考虑的是,建议通过具有单独电源的单独USB集线器连接设备(例如, 此设备 )。

该服务器场的功能之一是,由于持续充电,移动设备的电池寿命将限制为2-3年,因此,如果电池可以在设备上卸下,则需要提前购买。 在设备上,您可以关闭充电时设备屏幕持续打开的模式(只需保留设置,以在闲置30秒后自动关闭屏幕),因为 OpenSTF可以在需要时独立打开屏幕-这样可以延长设备的使用寿命。 重要的是,除没有VPN之外,不应从公司网络外部通过VPN访问OpenSTF,因为没有正常的授权。

正在运行的程序的屏幕截图


启动OpenSTF:



在OpenSTF中启动Google Play应用



OpenSTF中已连接设备的列表



在OpenSTF中配置设备信息



因此,其自己的Android设备服务器场有助于为远程员工配置对办公设备的访问权限,从而提高开发应用程序的质量。 它有其优点和缺点,值得考虑。

Source: https://habr.com/ru/post/zh-CN447236/


All Articles