• STF一机多控版(android版)安装部署手册


    stf简介:

    环境:mac 电脑

    依赖 Python3.6+NodeJS 8

    $  brew install node 

    NodeJS版本太高了也不行,一定要NodeJS 8,推荐使用nvm管理node版本

    1、 安装adb环境,记得配置环境变量。

    正常应该看到如下:

     

     nodejs 版本(需要8.X.0版本,是基于8.XX开发的,新的node可能会出现兼容问题): 8.14.0

     

    在安装过程中,出现错误:npm ERR! code ETARGET,先查看版本是否存在(访问命令行中地址,下载成功,版本存在),再查看镜像是否是公司镜像,如是,请更新镜像为 https://registry.npmjs.org, 重新安装成功。

    $npm config get registry

    $npm config set registry https://registry.npmjs.org

    node升降级方法:
    
    $sudo npm install n -g
    
    $sudo n 8.X.0   # X为你想要的版本
    安装匹配版本的npm:
    $ cnpm install npm@6.4.1 -g

    2、 检查是否安装brew(如按步骤1安装的adb应该已装brew):brew -v

     

     3、Git配置SSH Key:

    生成密钥#ssh-keygen -t rsa -C "git注册邮箱"

    查看密钥#cat /Users/cdtanghui3/.ssh/id_rsa.pub

    Git中填写密钥:

     

     测试#ssh -T git@github.com,如出现以下提示即配置成功。

     

     4、 选择最新git包(Batch control based on STF support Mac/Linux,基于stf二次开发群控管理平台,支持Mac,Linux部署,一机多控):https://github.com/EasilyTest/stf.git

    本地新建stf路径后进入该文件夹中,

    $git clone https://github.com/EasilyTest/stf.git

    5、 安装 brew 以及nodejs后,运行以下命令, 安装stf依赖包:

    $cd /

    $ pip3 install -U "tidevice[openssl]"  #如安装报错,使用下述命令安装,使用python3.6+版本下载安装,如版本小于3.6,brew install python安装最新版

    $pip3 install -U tidevice #阿里内部小组用来做 iOS 自动化用的工具

    $brew uninstall --ignore-dependencies XXX #如有安装老版本,请卸载后安装

    $brew install --HEAD usbmuxd #USBMuxd连接方式不需要做MFI认证,支持iPhone上的App跟外设通过进行通信

    $brew unlink XXX #如有安装老版本,请先去链接绑定

    $brew link usbmuxd

    $brew install --HEAD libimobiledevice #libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。

    $brew install --HEAD ideviceinstaller #管理iOS设备上应用程序的安装与卸载,以及查看相关信息。 

    $brew install carthage #提供OS X平台的pkg安装文件,管理iOS三方库。

    $brew install socat #实现远程DEBUG

    $brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config #安装rethinkdb

    $brew install --cask android-platform-tools #安装adb,如步骤1已安装,此命令不执行。

    6、 进入stf路径下修改文件

    (1)在package.json中,将"node-sass",从"^3.13.1",改为"^4.13.1”。

    (2)在bower.json中,将“ ng-context-menu”从“ AdiDahan / ng-context-menu#~1.0.5”更改为“ swimlane/ng-context-menu#~1.0.1”。

    7、 进入stf根目录(安装依赖)

       $npm install –unsafe-perm

         如果没报错继续下一步。否则跳转到第10步。

    8、更新依赖关联

        $npm link

    9、检查stf环境

        $stf doctor

    执行遇见问题:ERR/cli:doctor 80758 [*] Unexpected error checking ZeroMQ: Error: Could not locate the bindings file. Tried:

    解决方法:$npm rebuild

    再次$stf doctor,成功

     

     8、 启动stf

    $stf local

    报错:

    2021-04-25T08:30:35.107Z FTL/db 82194 [*] No hosts left to try
    
    2021-04-25T08:30:35.107Z FTL/util:lifecycle 82194 [*] Shutting down due to fatal error
    
     
    
    /Users/cdtanghui3/Downloads/STF/stf/node_modules/bluebird/js/main/promise.js:680
    
                throw e;
    
                ^
    
    ExitError: Exit code "1"
    
        at ChildProcess.<anonymous> (/Users/cdtanghui3/Downloads/STF/stf/lib/util/procutil.js:49:23)
    
        at emitTwo (events.js:126:13)
    
        at ChildProcess.emit (events.js:214:7)
    
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)

    原因:可能没有启动rethinkdb命令。

    解决办法:$rethinkdb& #启动rethinkdb

     再次$ stf local,启动成功

    9、一机多控

     

     10、问题处理(终极解决方法)

    在stf根目录下,执行命令:$npm list --depth=0

    对比自己的版本和下面的版本是否一致。优先对比红色字体部分。

    步骤为:

    $npm uninstall XXX

    $npm install XXX@xxx

    或npm audit fix

    ├── @slack/client@3.16.0

    ├── adbkit@2.11.1

    ├── adbkit-apkreader@3.2.0

    ├── adbkit-monkey@1.0.1

    ├── android-device-list@1.2.3

    ├── async@2.6.3

    ├── aws-sdk@2.744.0

    ├── basic-auth@1.1.0

    ├── bluebird@2.11.0

    ├── body-parser@1.19.0

    ├── bower@1.8.8

    ├── bplist@0.0.4

    ├── bufferutil@1.3.0

    ├── chai@3.5.0

    ├── chalk@1.1.3

    ├── compression@1.7.4

    ├── cookie-session@2.0.0-rc.1

    ├── css-loader@0.23.1

    ├── csurf@1.11.0

    ├── debug@2.6.9

    ├── del@2.2.2

    ├── eslint@3.19.0

    ├── event-stream@3.3.5

    ├── eventemitter3@1.2.0

    ├── exports-loader@0.6.4

    ├── express@4.17.1

    ├── express-validator@2.21.0

    ├── extract-text-webpack-plugin@1.0.1

    ├── file-loader@0.9.0

    ├── file-saver@1.3.3

    ├── formidable@1.2.2

    ├── fs-extra@8.1.0

    ├── gm@1.23.1

    ├── gulp@3.9.1

    ├── gulp-angular-gettext@2.3.0

    ├── gulp-eslint@3.0.1

    ├── gulp-jsonlint@1.3.2

    ├── gulp-protractor@3.0.0

    ├── gulp-pug@3.3.0

    ├── gulp-run@1.7.1

    ├── gulp-util@3.0.8

    ├── hipchatter@0.3.2

    ├── html-loader@0.4.5

    ├── http-https@1.0.0

    ├── http-proxy@1.18.1

    ├── images@3.2.3

    ├── imports-loader@0.6.5

    ├── in-publish@2.0.1

    ├── jasmine-core@2.99.1

    ├── jasmine-reporters@2.3.2

    ├── jpeg-turbo@0.4.0

    ├── json-loader@0.5.7

    ├── jws@3.2.2

    ├── karma@1.7.1

    ├── karma-chrome-launcher@2.2.0

    ├── karma-firefox-launcher@1.3.0

    ├── karma-ie-launcher@1.0.0

    ├── karma-jasmine@2.0.1

    ├── karma-junit-reporter@1.2.0

    ├── karma-opera-launcher@1.0.0

    ├── karma-phantomjs-launcher@1.0.4

    ├── karma-safari-launcher@1.0.0

    ├── karma-webpack@1.8.1

    ├── ldapjs@1.0.2

    ├── less@2.7.3

    ├── less-loader@2.2.3

    ├── lodash@4.17.21

    ├── markdown-serve@0.3.3

    ├── memory-fs@0.3.0

    ├── mime@1.6.0

    ├── minicap-prebuilt-beta@2.4.0

    ├── minimatch@3.0.4

    ├── minitouch-prebuilt-beta@1.3.0

    ├── my-local-ip@1.0.0

    ├── ng-context-menu@0.1.1

    ├── node-libs-browser@1.1.1

    ├── node-sass@4.14.1

    ├── node-unzip-2@0.2.8

    ├── openid@2.0.7

    ├── passport@0.3.2

    ├── passport-oauth2@1.5.0

    ├── passport-saml@0.15.0

    ├── phantomjs-prebuilt@2.1.16

    ├── please-update-dependencies@2.0.0

    ├── protobufjs@3.8.2

    ├── protractor@5.4.4

    ├── protractor-html-reporter-2@1.0.4

    ├── proxy-addr@1.1.5

    ├── pug@2.0.4

    ├── raw-loader@0.5.1

    ├── request@2.88.2

    ├── request-progress@2.0.1

    ├── request-promise@4.2.6

    ├── rethinkdb@2.4.2

    ├── sass-loader@4.1.1

    ├── script-loader@0.7.2

    ├── semver@5.7.1

    ├── serve-favicon@2.5.0

    ├── serve-static@1.14.1

    ├── sharp@0.22.1

    ├── sinon@1.17.7

    ├── sinon-chai@2.14.0

    ├── sleep@6.3.0

    ├── socket.io@2.3.0

    ├── socket.io-client@1.4.8

    ├── split@1.0.1

    ├── stf-appstore-db@1.0.0

    ├── stf-browser-db@1.0.2

    ├── stf-device-db@1.2.0

    ├── stf-syrup@1.0.0

    ├── stf-wiki@1.0.0

    ├── style-loader@0.13.2

    ├── swagger-express-mw@0.7.0

    ├── swagger-tools@0.10.4

    ├── teen_process@1.15.0

    ├── temp@0.8.4

    ├── template-html-loader@0.0.3

    ├── then-jade@2.4.4

    ├── transliteration@1.6.6

    ├── url-join@1.1.0

    ├── url-loader@0.5.9

    ├── utf-8-validate@1.2.2

    ├── uuid@3.4.0

    ├── UNMET PEER DEPENDENCY webpack@1.15.0

    ├── webpack-dev-server@3.11.0

    ├── ws@3.3.3

    ├── yargs@6.6.0

    └── zmq@2.15.3

    11、

    ios 不显示问题

    通过查看源代码发现,这里代码里面写死了wda包名。需要修改为手机上安装的wda的包名。

     机上安装的wda的包名查看方式:先找到webdriveragent app,使用命令:

     %  ideviceinstaller -l|grep 'WebDriverAgentRunner-Runner'

    或者在xcode中查看:

    12、其他问题

    (1)zmq 未绑定

    在stf根目录:

    npm install --save zmq

    echo 'require("zmq")' | node

    cd node_modules/zmq/; node-gyp configure

    (2)执行stf 命令,提示权限不足

    chmod 777 路径

    (3)移除stf/node_modules

    npm install rimraf -g

    rimraf node_modules

    (4)stf 卸载

    npm uninstall -g stf

  • 相关阅读:
    pyqt5 动画在QThread线程中无法运行问题
    几种编码格式
    Android精品课程—PullToRefresh 下拉刷新
    【张泽华】android视频教程下载地址及上课源代码
    Android中常用适配器及定义自己的适配器
    VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测
    google maps api申请的问题
    如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)
    cvsnt 设置用户、修改密码
    Windows下用Git下载android源码 转载
  • 原文地址:https://www.cnblogs.com/Tanwheey/p/14701568.html
Copyright © 2020-2023  润新知