xcodebuild在启动模拟器时超时

时间:2017-01-23 01:48:34

标签: ios-simulator teamcity xcode8 xcodebuild codesign

我正在尝试使用TeamCity为我的iOS应用设置自动化测试。目前,我的代理构建,但是一旦构建了最后一个目标并运行了代码签名,它就会挂起并显示以下内容:

[19:29:34][CodeSign] CodeSign /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Build/Products/Debug-iphonesimulator/MyProductiOSUITests-Runner.app/PlugIns/MyProductiOSUITests.xctest
[19:29:34][CodeSign]     cd /Users/ericmiller/.tcagent/work/f9abef315a0137d4
[19:29:34][CodeSign]     export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
[19:29:34][CodeSign]     export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/ericmiller/.pyenv/shims:/Users/ericmiller/.rbenv/shims:/Users/ericmiller/.pyenv/shims:/Users/ericmiller/Scripts:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/local/bin"
[19:29:34][CodeSign] Signing Identity:     "-"
[19:29:34][CodeSign]     /usr/bin/codesign --force --sign - --timestamp=none /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Build/Products/Debug-iphonesimulator/MyProductiOSUITests-Runner.app/PlugIns/MyProductiOSUITests.xctest
[19:29:34][CodeSign] /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Build/Products/Debug-iphonesimulator/MyProductiOSUITests-Runner.app/PlugIns/MyProductiOSUITests.xctest: replacing existing signature
[19:31:32][CodeSign] 2017-01-22 19:31:32.279 xcodebuild[28262:86807]  iOSSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1.
[19:31:32][CodeSign] 2017-01-22 19:31:32.290 xcodebuild[28262:86805]  iOSSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1.
[19:31:32][CodeSign] 2017-01-22 19:31:32.291 xcodebuild[28262:86797] Error Domain=IDETestOperationsObserverErrorDomain Code=3 "Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Logs/Test/89F7C786-9E91-419F-98CA-F36385618DC2/Session-MyProductiOSTests-2017-01-22_192932-E95vcV.log" UserInfo={NSLocalizedDescription=Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Logs/Test/89F7C786-9E91-419F-98CA-F36385618DC2/Session-MyProductiOSTests-2017-01-22_192932-E95vcV.log}
[19:31:32][CodeSign] 2017-01-22 19:31:32.291 xcodebuild[28262:86797] Error Domain=IDETestOperationsObserverErrorDomain Code=3 "Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Logs/Test/89F7C786-9E91-419F-98CA-F36385618DC2/Session-MyProductiOSUITests-2017-01-22_192932-mrX7wQ.log" UserInfo={NSLocalizedDescription=Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file at /var/root/Library/Developer/Xcode/DerivedData/MyProductiOS-fgkoogiimhlbckdlbckzmqfyaoff/Logs/Test/89F7C786-9E91-419F-98CA-F36385618DC2/Session-MyProductiOSUITests-2017-01-22_192932-mrX7wQ.log}

模拟器应用程序在Dock中打开。点击模拟器什么都不做,但如果我右键单击并选择窗口,我可以看到模拟器确实在运行,但没有显示任何内容。 Example

我正在寻找一种解决方法来测试我的代码,如果可能的话,无需切换到物理设备而不是模拟器。我如何实现这一目标,以及我的配置可能出现什么问题?

编辑:

Sven Driemecker找到了解决方案。这是我的配置。 在运行xcodebuild之前,我运行以下shell脚本以确保卫生测试环境。

xcrun simctl shutdown %env.simulator_guid%
killall Simulator
killall com.apple.CoreSimulator.CoreSimulatorService
xcrun simctl erase %env.simulator_guid%

然后,在运行xcodebuild时,添加以下选项:

-destination "id=%env.simulator_guid%"

最后,要清理一切:

xcrun simctl shutdown %env.simulator_guid%
killall Simulator
killall com.apple.CoreSimulator.CoreSimulatorService

更新:这里有关于如何为XCode / iOS设置基本TeamCity CI的blog post I wrote

6 个答案:

答案 0 :(得分:5)

尝试从Xcode 11.3.1在模拟器中运行iOS应用时,我遇到了类似的错误。我发现重新选择虚拟硬件可以比此页面上提到的其他解决方案更快地解决此问题。

当我在Xcode中收到“等待Simulator.app准备就绪而超时” 错误时,Simulator.app通常已启动,但未显示任何实际的模拟器。选择Hardware > Device > [OS version] -> [Simulator Name]会导致模拟器出现,并在下次尝试运行时成功启动我的应用。

答案 1 :(得分:2)

如果您从另一个Xcode运行Simulator.app,则Xcode 11.3和更早版本中存在一个bug,该bug可能以这种方式体现。有一个小的比赛窗口可能会发生这种情况。这在Xcode 11.3.1中已解决。

但是...

在Xcode 11.3.1和更高版本中(此注释中通过Xcode 11.4.1)存在一个错误,该错误也以这种方式体现。要解决此问题,您可以在Dock启动后单击Simulator.app(即使它是前台)。另外,您可以通过“编辑->自动同步粘贴板”在Simulator.app中启用粘贴板同步。

答案 2 :(得分:1)

看起来很奇怪,但简单地重置模拟器通常可以解决这个问题。我们经常在自己的CI系统上遇到同样的错误。

尝试模拟器菜单 - >重置内容和设置,然后重新启动模拟器。

您可以在命令行中强制执行此操作,但我不会推荐它,因为它会显着降低您的构建速度。

答案 3 :(得分:1)

我没有找到解决此问题根本原因的好方法,但已找到解决方法。如果您只是在使用Xcode构建应用程序之前打开模拟器,则可以忽略此问题。

答案 4 :(得分:0)

杀死重新开启模拟器为我工作。

答案 5 :(得分:0)

您还可以检查Simulator应用程序的Window菜单。

可能有一个或多个Simulator窗口被标记为使用[External Display]。当您从菜单中选择一个窗口时,将不会显示任何内容,但是您可以按Cmd-W将其关闭。

使用外部显示器关闭所有窗口后,模拟器将重新开始正常工作。

我不确定如何为模拟器选择外部显示器,但是这在我身上发生了几次,只是退出模拟器应用程序并没有帮助。我必须做上面描述的事情,或者重新启动机器。