windows 下安装和运行STF,已在win7和win10验证

本文详细记录了在Windows 7和10上安装及运行STF的完整过程,包括安装编译环境、解决npm安装依赖问题,特别是针对jpeg-turbo的编译问题,以及解决STF运行时的权限问题。通过手动编译和设置权限,成功在Windows下运行STF服务。

折腾了3天总算能在win7下跑stf了,记录一下大致过程

OS:Win7sp1, 已经在win10下安装成功
型号:华为PE-TL20
安卓4.4.2

首先是根据官网说明,npm install -g stf
由于需要二次开发,因此从github拉代码下来https://github.com/openstf/stf

先安装编译环境,再在代码目录执行 npm install,由于依赖包很多,强烈建议改用国内npm源,淘宝或者cnpmjs

安装编译环境

部分依赖包需要build,建议先 npm install windows-build-tools
部分包需要c++环境,建议安装 visual studio 2015,并指定编译器开关 npm config set msvs_version 2015
单独安装node-gyp,并根据花式报错信息,慢慢解决(这一步每台电脑不同,没有统一解决方案)

安装依赖包

以下这些依赖在windows下可能会坑,我这边是把package.json中相关项去掉后,另外npm install xxx自行安装的,

bcrypt
graceful-fs
jpeg-turbo
lodash.deburr
lodash.words

注意点:
jpeg-turbo一直编译不通过,做了以下两个事情,(stf官网说暂时不支持windows并建议自行研究解决,因此不确定其他人是不是可以用这个方法搞定)

  1. 官网https://libjpeg-turbo.org/,找到Official Binaries下载 libjpeg-turbo-1.5.3-gcc.exe并安装到目录A,然后找了一台成功安装了stf的mac机器,把stf的node_modules中的jpeg-turbo目录copy到windows下的stf的node_modules,然后把目录A中的文件覆盖到node_modules里。(玄学)
  2. 后来仔细看了这个包的错误日志,发现node-gyp编译过程中尝试寻找\lib\binding\node-v57-win32-x64\jpegturbo.node文件,当找不到这个文件时,尝试从这里下载
    https://pre-gyp.s3.amazonaws.com/jpegturbo/v0.4.0/jpegturbo-v0.4.0-node-v57-win32-x64.tar.gz
    但是一直下载失败。
    解决方案是,下载node-jpeg-turbo源码自行编译, https://github.com/sorccu/node-jpeg-turbo
    在\build\Release找到jpegturbo.node文件,copy到 stf下node_modules\jpeg-turbo\lib\binding\node-v57-win32-x64目录,文件夹不存在就自行创建
    再安装编译jpeg-turbo,就可以编译通过了。
    2018/1/11追加:
    如果npm install报了gyp clean error,operation not permitted错误,尝试以下命令:
    “C:\Program Files\nodejs\node.exe” “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js” “rebuild”
    即自行调用node-gyp进行编译,而不是通过npm调用

到这里应该已经完成stf安装和编译
2018/5/7追加:
放一个我这边windows下能用的jped-turbo版本,直接解压到 node_modules里
链接:https://pan.baidu.com/s/1bVYz7955Y8S3g6oDR40b3A 密码:9ti8

2018/5/8追加:
用编译方式安装 jped-turbo@0.4.0
自行安装 yasm 1.3.0,并为yasm配置环境变量
自行安装vs2015以上版本,并查看npm config get msvs_version是否为2015以上
自行安装node-gyp,这个东西可能要装python2.7
然后
git clone https://github.com/sorccu/node-jpeg-turbo.git –recursive
cd node-jped-turbo //以下四步真是见鬼了
node-gyp configure //我这里报错了
npm install //这里也报错了
node-gyp configure // 再执行竟然不报错了
node-gyp build //编译成功
去release里把jpeg-turbo.node 拷贝出来用

运行STF并解决权限问题

cmd运行 stf local
遇到报错 minicap和minicap.so 没有权限运行,并无限循环,stf会清理环境和重试拷贝文件
根据官方github查询已经testhome等地方查询,应该是windows下编译的文件,copy到linux下没有赋予执行权限导致的
adb shell chmod 0755 /data/local/tmp/minicap 需要运行类似的命令
以下是解决过程:
参考这两个文章
https://www.cnblogs.com/kissfu/p/6344084.html
http://blog.csdn.net/kyotrue/article/details/78657578
从git拉minicap代码
git clone https://github.com/openstf/minicap.git –recursive
使用ndk-build工具编译
libs下是编译出的 minicap文件
参考上述链接,将libs\armeabi-v7a\minicap文件拷贝到安卓机器,例如
adb push libs\armeabi-v7a\minicap /data/local/tmp/minicap
回到stf\node_modules下,找到
minicap-prebuilt\prebuilt\armeabi-v7a\lib,根据安卓版本,找到对应的api-level文件夹,并将minicap.so拷贝到安卓机器,和minicap同目录
赋予权限 adb shell chmod 777 /data/local/tmp/minicap 和minicap.so (我这里暴力一点直接777了)
端口映射 adb forward tcp:1717 localabstract:minicap
到minicap代码目录,进入examples,执行npm install,遇到编译错误可以忽略掉,只需要express之类的网站组件安装好就可以
执行node app.js,访问http://localhost:9002/,这时候应该能看到手机屏幕的动态了

到这里,说明windows pc和手机,不存在兼容性问题,可以回到stf继续调试

回到STF,分析错误日志
Pushed minicap.so not executable, attempting fallback location
在stf代码目录中全局搜索,找到三个文件
minicap.js
miniref.js
minitouch.js
发现触发异常的原因是checkExecutable方法返回false,
原始代码是

return (stats.mode & fs.constants.S_IXUSR) === fs.constants.S_IXUSR

在之前加入打印代码,

log.info("stats.mode: %s, fs.constants.S_IXUSR: %s, fs.constants.S_IRWXU: %s", stats.mode,  fs.constants.S_IXUSR, fs.constants.S_IRWXU);
log.info("fs.constants: %s", JSON.stringify(fs.constants));

运行发现fs.constants.S_IXUSR为undefined,
根据nodejs文档
https://nodejs.org/api/fs.html#fs_fs_constants_1,S_IXUSR代表 File mode indicating executable by owner.
这里猜测是 windows环境导致S_IXUSR无法获取到,(因为mac下并没有这个鬼,linux没有试验)
最终解决方案,
为保证权限,将这三个文件中 mode: 0755修改为 mode: 0777,(实际是调用adbkit的push方法)
并将这三个文件的这行判断语句修改为

// return (stats.mode & fs.constants.S_IXUSR) === fs.constants.S_IXUSR
return (stats.mode & 33279) === 33279   // 100777

这里应该可以计算 100755的十进制数值,然后不用改mode

重启stf local,没有异常
访问localhost:7100

win7下跑起来了

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值