一、现状

目前ios真机官方进度反馈,仍是远程操作比较卡顿,待后期继续优化解决;
部署到个人mac节点上,可以发现,还是比较难满足日常使用的(主要是太卡了),待持续优化中。
如果对sonic云真机不是很熟悉,建议可以先去看下:
官网:sonic官网
前两篇文章:
sonic云真机linux分布式部署
sonic云真机linux单机版部署

二、接入环境

mac机器部署ios的agent接入

===================== 配置环境检查结果 =====================
JAVA_HOME(系统PATH环境变量): /Library/Java/JavaVirtualMachines/jdk-18.jdk/Contents/Home
java version(运行当前jar的java版本): 18
ANDROID_HOME(系统PATH环境变量): /usr/local/Caskroom/android-platform-tools/30.0.0
ADB path: /usr/local/bin/adb
ADB version: Android Debug Bridge version 1.0.41
Version 30.0.0-6374843
Installed as /usr/local/bin/adb
chromeDriver path: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
chromeDriver version: 姝e湪鐜版湁鐨勬祻瑙堝櫒浼氳瘽涓墦寮�銆�
Node path: /usr/local/bin/node
Node version: v16.8.0
npm path: /usr/local/bin/npm
npm version: 7.21.0
adbkit path: /usr/local/bin/adbkit
adbkit version: 2.11.1
Appium path: /usr/local/bin/appium
Appium version: 1.22.3
System: mac os x

三、具体步骤

官方接入步骤:ios真机接入
建议先通篇阅读官方接入,这里作为实战参考补充

1、获取agent的key,设置环境变量JAVA_HOME、ANDROID_HOME、ANDROID_HOME等,可参考前篇文章部署: sonic云真机linux单机版部署

1.1、mac更新java为18的过程:进入jdk官网,下载jdk18 Java Downloads
在这里插入图片描述
将上图中的文件,直接拖到mac的应用程序栏,mac系统会弹窗提示要不要替换掉之前的java版本(如果有),点击确定即可替换,然后命令行验证一下版本即可

liandm1-Mac003:logs iotsofttest$ java -version
java version "18" 2022-03-22
Java(TM) SE Runtime Environment (build 18+36-2087)
Java HotSpot(TM) 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)

2、下载agent代理文件并解压:agent文件部署下载
在这里插入图片描述

unzip sonic-agent-v1.3.2-release-macosx_x86_64.zip -d .
liandm1-Mac003:sonic-agent iotsofttest$ ls
sonic-agent-v1.3.2-release-macosx_x86_64     sonic-agent-v1.3.2-release-macosx_x86_64.zip
liandm1-Mac003:sonic-agent iotsofttest$ pwd
/Users/iotsofttest/lixf6/sonic-agent

3、授权整个目录

sudo chmod -R 777 sonic-agent-v1.3.2-release-macosx_x86_64

4、mac电脑拉取wda代码并成功编译
4.1、拉取以下分支并用xcode打开,执行编译,可对照官网图执行

git clone https://github.com/SonicCloudOrg/sonic-ios-wda.git

4.2、编译过程,可能会因为没有开发者证书报错:Signing for “IntegrationApp” requires a developement team. Select a developement team in the project editor
可参考解决 XZ_iOS之运行项目到真机出现错误的解决

4.3、图中红色的对应下文5中application-prod.yml的wda-bundle-id,黄色的则是出现4.2中报错,全部改一遍的位置
在这里插入图片描述
4.4、以上执行完,如果手机还没wda装上,则,执行以下步骤安装wda
进入存在WebDriverAgentRunner的目录(已经执行过编译成功再往下,否则先确保上面的代码编译成功):

liandm1-Mac003:sonic-ios-wda iotsofttest$ ls
CONTRIBUTING.md          Gemfile                  PrivateHeaders           WebDriverAgent.xcodeproj WebDriverAgentTests      docs                     lib
Configurations           LICENSE                  README.md                WebDriverAgentLib        azure-templates          gulpfile.js              package.json
Fastlane                 PATENTS                  Scripts                  WebDriverAgentRunner     ci-jobs                  index.js                 test
liandm1-Mac003:sonic-ios-wda iotsofttest$ pwd
/Users/iotsofttest/lixf6/sonic-ios-wda

确保当前路径在sonic-ios-wda下:

$ xcodebuild build-for-testing -scheme WebDriverAgentRunner -sdk iphoneos -configuration Release -derivedDataPath /tmp/derivedDataPath
$ cd /tmp/derivedDataPath
$ cd Build/Products/Release-iphoneos # path might be different
$ mkdir Payload && mv *.app Payload
$ zip -r WDA.ipa Payload

以上操作完,则会出现 WDA.ipa,见下

liandm1-Mac003:sonic-ios-wda iotsofttest$ cd /tmp/derivedDataPath/Build/Products/Release-iphoneos
liandm1-Mac003:Release-iphoneos iotsofttest$ ls
IntegrationApp.app.dSYM          Payload                          WDA.ipa                          WebDriverAgentLib.framework      WebDriverAgentLib.framework.dSYM

如果sib命令存在,则可执行

$ sib app install WDA.ipa

如果sib提示不存在,则使用tidevice替代

tidevice install WDA.ipa

tidevice用法参考 APP自动化(一):tidevice使用

以上执行完后,苹果手机便会多出一个wda程序
在这里插入图片描述

5、修改config文件夹中 application-prod.yml并保存

sonic:
  agent:
    # 替换为部署Agent机器的ipv4
    host: 10.74.33.53
    # 替换为Agent服务的端口,可以自行更改
    port: 7777
    # 替换为前端新增Agent生成的key
    key: 89c80c2c-c317-48c1-b21f-#########
  server:
    # 这个host改成后端的host
    host: 10.16.###.###
    # 这个port改成后端文件中心的port(一般不变)
    folder-port: 8094
    # 这个port改成后端传输中心的port(一般不变)
    transport-port: 8095

modules:
  # 安卓模块配置
  android:
    enable: true
    # 是否开启远程adb调试功能
    use-adbkit: true
  # iOS模块配置
  ios:
    # 如果不需要连接iOS设备,请将true改为false。开启的windows用户请确保本机已安装iTunes
    enable: true
    # 替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书
    wda-bundle-id: com.facebook.WebDriverAgentRunner.lixf6
  appium:
    enable: true
    # 默认为0会自动寻找随机端口启动,如果需要指定appium server端口,请在这里设置
    port: 0
  # 在线webView调试模块配置
  webview:
    enable: true
    # 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)
    chrome-driver-debug-port: 0
    # Agent机器上的chrome浏览器的driver路径,可以去http://npm.taobao.org/mirrors/chromedriver/下载
    chrome-driver-path: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

# Agent日志管理,一般不需要更改,可根据自己需要配置
logging:
  file:
    #日志路径
    name: logs/sonic-agent.log
  logback:
    rollingpolicy:
      clean-history-on-start: true
      #保留天数
      max-history: 3
  pattern:
    console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}"

6、运行jar包,查看日志,如果mac电脑运行agent时提示:
进入sonic-agent-v1.3.2-release-macosx_x86_64目录并执行java命令:

liandm1-Mac003:sonic-agent-v1.3.2-release-macosx_x86_64 iotsofttest$ ls
config                        mini                          sonic-agent-macosx-x86_64.jar webview
logs                          plugins                       test-output
liandm1-Mac003:sonic-agent-v1.3.2-release-macosx_x86_64 iotsofttest$ pwd
/Users/iotsofttest/lixf6/sonic-agent/sonic-agent-v1.3.2-release-macosx_x86_64
liandm1-Mac003:sonic-agent-v1.3.2-release-macosx_x86_64 iotsofttest$ java -jar sonic-agent-macosx-x86_64.jar &

如果出现以下报错:
在这里插入图片描述
则mac电脑点击系统偏好设置–安全性与隐私–通用,下面会弹出一个类似验证的页面,点击允许即可

7、最终接入后,前端效果
在这里插入图片描述

在这里插入图片描述

四、接入第二台iOS真机

其实以上一到三步骤,已经可以满足日常使用,但是为了便于后续接入第二台ios真机,这里再独立一个部分,专门来讲
1、把上面中用xcode打开的项目,按如图顺序执行,然后可以发现,手机端就生成了WDA(其他的不要改,因为agent节点里面指定的标识需要统一,即wda-bundle-id: com.facebook.WebDriverAgentRunner.lixf6)
在这里插入图片描述

这里点击Test后,可以看到ios手机就会生成WDA
在这里插入图片描述

2、查看手机,可以发现ios真机投屏成功时,wda已经在手机同步运行通信中:在这里插入图片描述

参考

1、《Sonic安装部署之——iOS设备接入》:Sonic安装部署之——iOS设备接入
2、《mac安装或升级java》:Java Downloads

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐