windows 下安装和运行STF,已在win7和win10验证
2018-01-05 15:49
2551 查看
折腾了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
部分包需要c++环境,建议安装 visual studio 2015,并指定编译器开关 npm config set msvs_version 2015
单独安装node-gyp,并根据花式报错信息,慢慢解决(这一步每台电脑不同,没有统一解决方案)
注意点:
jpeg-turbo一直编译不通过,做了以下两个事情,(stf官网说暂时不支持windows并建议自行研究解决,因此不确定其他人是不是可以用这个方法搞定)
官网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里。(玄学)
后来仔细看了这个包的错误日志,发现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安装和编译
遇到报错 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,
原始代码是
在之前加入打印代码,
运行发现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方法)
并将这三个文件的这行判断语句修改为
这里应该可以计算 100755的十进制数值,然后不用改mode
重启stf local,没有异常
访问localhost:7100
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并建议自行研究解决,因此不确定其他人是不是可以用这个方法搞定)
官网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里。(玄学)
后来仔细看了这个包的错误日志,发现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安装和编译
运行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 64位操作系统下git的安装 显示文件版本和正在运行的windows版本不一致
- 在win7下,easyphp安装过程中MSVCR110.DLL没有被指定在WINDOWS上运行,或者它包含错误
- Windows补丁:安装程序不能验证Update.inf文件的完整性,请确定加密服务正在此计算机上运行
- # 【ARM-Linux开发】在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): 【Linux开发】 --- > 一段时间以来,一直是在Windows上安装虚拟机
- JDK的安装与第一个Java小程序的运行(在win7和win10上检验过)
- win7 提示 由于无法验证发布者,windows阻止控件安装 解决办法
- caffe使用过程+digits在windows下的安装和运行
- win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
- Windows系统安装————windows7 企业版 无法安装 NET.framework4.52-4.6版本在WIN7下解决办法
- Win7 下安装Oracle 12c 报错:[INS-30131] 执行安装程序验证所需的初始设置失败。
- win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
- 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决方案(转)
- Caffe_Windows学习笔记(六)图形化操作工具digits的安装与运行
- windows 安装程序无法将windows配置为在此计算机的硬件上运行
- win7 64下暗黑世界V1.1 服务器端及客户端的安装及运行 成功
- win7 x64下安装mysql-workbench 5.2以及解决无法运行问题
- 【SQL】win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
- 让Win10管理员账户运行Windows应用
- go语言在Windows系统下的安装并运行Hello World程序
- 在Windows里安装运行HAProxy【cygwin法】