如何配置Xcode`simctl launch`命令超时?

时间:2015-01-27 22:25:42

标签: xcode xcode6 ios-simulator

当我运行simctl launch命令在iOS模拟器中启动应用程序时,应用程序可能会也可能不会出现,具体取决于iOS模拟器将其一起行动所需的时间。以下观察结果让我相信存在某种超时,但从有限的simctl文档中可以看出,超时是什么以及如何控制它。

启动应用程序时,如果应用程序在35-90秒内没有启动,它可能无法启动(iOS模拟器进入主屏幕)。但是,如果应用程序设法在20秒内启动,它总会出现。

如果第一次启动失败,相同的应用程序,同一台机器,相同的命令通常会在第二次或第三次尝试时成功,因为无论需要“预热”这样做。

我猜测超时可能是30秒。如何将其设置为更大的值?

更新

以下是我们确切的事件顺序:

  1. 如果设备已关闭,请将其启动(simctl boot ...)并等待状态更改为simctl list中的已引导
  2. 卸载应用(simctl uninstall ...
  3. 安装应用(simctl install ...
  4. 关闭设备(simctl shutdown ...)并等待其关闭
  5. 启动iOS模拟器(open -a "<path to simulator> --args -CurrentDeviceUDID <device id>
  6. 等待设备达到启动状态
  7. 启动应用(simctl launch ...
  8. 这是最后一步并不总能成功。没有错误,应用程序就没有出现。

2 个答案:

答案 0 :(得分:2)

无法将超时配置为高于30秒。对于我们有超时(等待系统应用程序签入)的问题,30s已经非常高了。假设设备已经启动,那应该不是问题。


<强>更新

根据更新的问题,现在很清楚,设备是通过'simctl boot'而不是iOS模拟器启动的。目前,如果从命令行引导设备,它仅适用于NonUI工作(例如:单元测试),因为设备配置为没有连接头。如果您尝试在此状态下启动应用程序,则会收到错误,因为系统应用程序无法响应启动请求。我怀疑你可能想要做我在Xcode 6 - Launch simulator from command line

的回答中描述的事情
open -a "iOS Simulator" --args -CurrentDeviceUDID <DEVICE UDID>
simctl install ...
simctl launch ...

换句话说,从第5步开始。

如果iOS模拟器已在运行,您必须从iOS模拟器GUI切换到另一台设备(或者终止该过程并使用上面的命令行参数重新启动它)。

如果在没有使用'simctl boot'的情况下发生问题,请更新。

答案 1 :(得分:0)

在我们将硬件升级到带有SSD驱动器的设备之前,我们确实遇到了这些问题。与iPhoto类似...... iOS模拟器可以在具有传统硬盘的计算机上使用。这似乎是一种方法,如何强迫开发人员购买新硬件,即使旧硬件仍能正常运行。