STF-集成-iOS之五:部署总结

link on JianShu

在测试旧的MacPro机器上搭建正式的部署环境。

Mac系统为13.3 + Xcode9.4。 根据测试环境搭建的经验,选择Xcode10.1

###系统环境 苹果的开发者网站可以正常访问,但下载Xcode时却需要翻墙,文件过大Xcode 10.1有5.6GB,chrome下载过程中,多次出现下载失败情况,resume后无法续传。网上的旧方案为使用wget+localCookie,但目前有人反馈也不好使。

  • 最终方案为:使用Safari进行下载,Safari下载Xcode支持续传功能。

  • Mac系统需要升级到10.14 Mojave才可以使用Xcode10.1

这基本就折腾了一天。

###iOS-STF环境

好在环境比较干净,执行下面的安装比较正常。依赖环境安装——

    brew install --HEAD usbmuxd
    brew unlink usbmuxd
    brew link usbmuxd
    brew install --HEAD libimobiledevice
    brew install --HEAD ideviceinstaller
    brew install carthage
    brew install socat

brew安装时,会检查Xcode版本,可能问题——

  1. 需要执行xcdoe-select --install安装对应的Develop Command tools;
  2. 提示Xcode过时。

Error: Your Xcode (10.1) is too outdated. Please update to Xcode 10.2.1 (or delete it). Xcode can be updated from the App Store.

Xcode outdated问题:编辑brew对应的配置脚本,删除对xcode版本的检查。

  1. Xcod10.1默认不支持12.3.1系统的iOS文件,需要找个Xcode10.3的版本,复制对应版本的支持文件: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/xxversion

###WDA环境

  • clone项目https://github.com/mrx1203/stf.git到本地,执行./Scripts/bootstrap.sh进行编译安装。
  • 使用Xcode打开此项目,登录Apple ID,将几个对应工程(lib、runner、test…)下的签名方案选择为自动签名(目前Xcode都可以自动识别账户+设备添加)
  • 项目根目录下执行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=ed042146799cb2d009e4a05d9215f5f30f446d98' test 进行,详细过程可参考这里

###源码环境 集成https://github.com/mrx1203/stf.git到现有的STF工程下,使用现有的前端规范

package更新了以下npm包:

npm install --save android-device-list@^1.1.85 
npm install --save bplist@0.0.4
npm install --save images@^3.0.2
npm install --save plist@^3.0.1
npm install --save request-promise@^4.2.4
npm install --save sharp@^0.22.0
npm install --save sleep@^6.0.0
npm install --save teen_process@^1.14.1
npm install --save unzip2@^0.2.5
npm install --save xml2js@^0.4.19
npm install --save xml2map@^1.0.2
npm install --save xutil@1

后端部分——

  • 拷贝lib/cli下的ios-device,ios-provider,local三个文件夹,local文件夹可以直接覆盖(新增参数+ios-provider线程)
  • 拷贝lib/cli下的index.js文件,直接覆盖(只是增加了新的依赖)
  • 拷贝lib/units下的ios-device,ios-provider文件夹;覆盖lib/units/storage/plugins/apk/task/manifest.js文件(支持ipa类型)
  • 拷贝lib/util下的ipareader.js和download.js文件;ipa文件解析和下载
  • 拷贝res/app/components/stf/install/install-service.js文件;ipa文件的安装
  • 拷贝res/app/components/stf/storage/storage-service.js文件;上传ipa文件
  • 拷贝lib/wire/wire.proto文件;加了消息

前端部分——

  • res/app/components/stf/control/control-service.js新增加了 screendump方法发送zmq消息通知,
  • lib/units/device/plugins/screen/dump.js,接收到消息后完成截图动作。

正常情况下,完成上面的动作之后,执行npm install,然后执行 stf local --wda-path /Users/gebitang/projects/tryout/WebDriverAgent/ --wda-port 8100 之后就可以识别iOS设备了

以provider方式启动——

bin/stf ios-provider --no-cleanup --name $localIp.local --min-port 7400 --max-port 7700 --connect-sub tcp://$serverip:7114 --connect-push tcp://$serverip:7116 --group-timeout 10000 --public-ip $localIp --storage-url http://$serverip:$serverport --wda-path /Users/gebitang/projects/tryout/WebDriverAgent/ --wda-port 8100 --vnc-initial-size 600x800 --mute-master never --allow-remote

 
comments powered by Disqus