在构建机器上从命令行运行 IOS 仪器的问题

Posted

技术标签:

【中文标题】在构建机器上从命令行运行 IOS 仪器的问题【英文标题】:Issue with IOS Instruments running from command line on build machine 【发布时间】:2013-04-28 18:05:29 【问题描述】:

我已在我的本地 Mac 上通过命令行成功运行 IOS UI Automation Instruments。当它开始测试时,模拟器会自动弹出,然后进行测试。

但是,当我通过 SSH 连接到 构建服务器(使用 OSX 和 xcode,最终将使用 Jenkins)并尝试做同样的事情时,它无法正常工作。

构建过程很好,但是只要我运行仪器,终端就会挂在那里,什么都不做。我认为它与 iphone 模拟器 GUI 有关,但由于它是 CLI,我不知道发生了什么......

你们有什么想法吗?谢谢!!

【问题讨论】:

您是否以登录用户身份运行 Jenkins?由于 Instruments 必须启动模拟器,因此您必须以登录用户身份运行 jenkins(或您正在使用的任何 CI 工具),因此会有一个窗口管理器。 @JonathanPenn 感谢您回来。我有一个不在 OSX 中的 Jenkins 服务器,所以我需要通过 SSH 连接到 OSX 构建机器来构建它并运行工具。那么在这种情况下,我们这里还有窗口管理器吗? 【参考方案1】:

.

通过 SSH 从 Jenkins 执行命令后;在大多数情况下,您会看到屏幕截图中的弹出窗口。您必须通过此屏幕才能执行测试。这篇文章解决了如何解决这个问题Stop "developer tools access needs to take control of another process for debugging to continue" alert

【讨论】:

【参考方案2】:

我也遇到了同样的问题。仪器 -w "$DEVICE" 忽略了参数。 与

相同
DEVICE_TARGET='iPhone 6 (8.1 Simulator)' cucumber --format json -o test-reports/cucumber-8.1-iphone.json

它忽略了 DEVICE_TARGET 参数。

通过运行 Jenkins slave 不作为 SSH slave 而是作为 通过 java web start 的 Slave 代理解决

http://i.stack.imgur.com/lNlPA.png

据我了解,此问题是由管理 sshd 并对远程用户执行范围限制的 OS X 启动代理引起的。

重要提示!从属代理应该从 OS X 桌面启动,不是通过 ssh!我已经通过 VNC 连接并在 OS X UI 上启动了从属 Java Web 代理终端。

【讨论】:

以上是关于在构建机器上从命令行运行 IOS 仪器的问题的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5.0.1 iOS 7.0.3 仪器命令行工具出错

仪器无法从命令行启动

从设备上的命令行运行仪器 4.5 时无法启动跟踪

使用外部图标文件从命令行构建/运行 IOS 应用程序

如何从命令行设置 android 仪器测试的 vm heapsize

iOS 6.x 在越狱时打开命令行