STF 二次开发辛酸之路

原创
03/07 17:08
阅读数 86

前言


接触STF平台已经有一段时间,但最近一个月多才正式做二次开发,分享一些二次开发的经验。有人对STF二次开发不太看好,代码看不懂,表示学习成本太高,不愿意去学习。语言这东西嘛,多看几遍就看懂了。对于STF平台的整体架构个人认为是写得非常的好,逻辑清晰,不仅仅做二次开发,我觉得其web架构与设计模式都是值得去学习。当然很多人觉得宁愿想用java和php去重新写一个类STF平台(server和web),但是又有多少人能做得出来更别说优于它了?当然testin就不说了,他们是一家公司在做这套东西。唠叨就说这么多,现在分享一下STF二次开发的一些经验吧。


平台的一些介绍


1.平台语言

1)使用html使用的是jade模版,后来因为jade改名为pug,因此现在使用的是pug模版引擎。

2)前端使用的是angularjs 1.x版本,虽然2016年5月份左右,google推出了angularjs2.0版本,但官方并不想更新angularjs的版本,继续使用1.x版本。如果改成2.0版本,相当于要重写平台。如果是重写平台,官方可能不会使用angularjs。

3)后端使用的是nodejs

4)数据库使用的是对象型数据库rethinkdb。至于为什么使用这个数据库,官方的回答是:看到新出来的rethinkdb,想尝试一下新的东西,于是就采用了。

2.STF平台组成

STF平台是由:stf,adbkit,STFService.apk,stf-syrup,adbkit-logcat,stf-device-db,adbkit-apkreader, minicap,minitouch,minirev等组件共同组成。

3.STF目录结构


4.STF平台启动

先启动rethinkdb,再使用stf local启动平台,stf 后面可带参数,stf --help可查看帮助。
stf 命令其实是调用了stf目录下lib/cli.js这个文件执行的。

修改了后端代码/lib 需要使用命令 gulp clean。

每次启动都好麻烦,而我的记性又不好。于是这里我写了一个shell的启动脚本start.sh(在目录/var/stf/下面),可直接运行此脚本启动。

一般启动: ./start.sh,由于ldap涉及到公司内部的信息,我就不写了。自行百度google 其ldap启动方法


非ldap启动:直接./start.sh
Ldap启动:./start.sh ldap

5.关于rethinkdb

Rethinkdb 属于对象型数据库,使用的是json字符串格式保存数据(不建议内嵌json超过三层)。其操作有异于关系型数据,但其扩展性比关系型数据库好,可随时在数据表中插入数据,不需要做数据关联操作。

6.modules组件

Node相关的modules组件使用的是npm的安装方式,而Package.json是所要安装的组件名及其版本号,格式如下图所示。如需要新增组件也可以直接使用npm install 组件名@版本号。如果安装不成功,大多数是因为网络问题,建议开启VPN进行下载。

Openstf相关的adbkit等组件有源代码可以修改,底层操作手机也是用adbkit这些组件来做的,详细的语法及使用可直接进入相关的github官网查看。


前端开发


res目录结构


res 目录分为service与web,service主要用于后端通讯操作,而web是前端展示。

Service目录在res/app/component/stf目录下。

比如需要增加一个task(任务管理的界面),则新建一个task文件件,里面创建几个文件:
index.js
task-controller.js
task.pug等

修改app目录下的app.js,增加require(‘./task’).name,如下图所示

增加task的service到目录stf/res/app/components/stf/下增加目录task文件夹,并创建index.js与taskservice.js,用于通讯。

一般都是使用get,post请求,而stf使用的是oboe模块来接收发送的。代码如下



后端


db 是数据操作文件,分为api.js,index.js,setup.js,tables.js

db 的操作只需要修改tables.js与api.js即可,其它两个文件可以不用修改。

api.js主要用于数据库增删查操作


units是核心代码,根据其命名可得知其作用。需要增加什么功能就直接新建文件夹,当然代码肯定要自己写。

其它功能自己写,这里就只讲如何插入log

STF平台已经写了一个方法来显示Log的,require 其自带的logger.js就可以打日志了



数据库Rethinkdb


官网:www.rethinkdb.com

一般网络是连接不上rethinkdb的官网的很多时候真的都打不开,跟我们国内的网络真恶心,需要开VPN。

学习rethinkdb没有捷径,百度google都没有用。只能上官网看英文,不懂上github中提issue,英文不好的就得用力啃了。

启动完rethinkdb后的可访问网址 http://ip:8080 webview的操作界面,可在web上面对数据库进行操作。,可进入

好了就写这么多,早晨的时间总是过得飞快,国庆过后的7个工作日,辛酸辛酸。




本文分享自微信公众号 - TesterHome(AskTesterHome)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部