11

我已经安装了 Xcode 12 beta 2。我尝试在 Mac OS Catalina 上通过 Jenkins 运行我们的 xamarin 项目。它失败并出现以下错误。当我从 Mac Visual Studio 构建相同的项目时,它成功且没有任何错误。

SplashViewController.storyboard : error :
 iOS 14.0 (14.0 - 18A5319g) - com.apple.CoreSimulator.SimRuntime.iOS-14-0 (unavailable, failed to open liblaunchsim.dylib) ==> not available:
  Error Domain=com.apple.CoreSimulator.SimError Code=401 "The iOS 14.0 simulator runtime is not available."
  UserInfo={NSLocalizedDescription=The iOS 14.0 simulator runtime is not available.,
   NSUnderlyingError=0x7fef8847b520 {Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort"
  UserInfo={NSLocalizedFailureReason=XPC error talking to SimLaunchHostService: <error: 0x7fff97d649a0> { count = 1, transaction: 0, voucher = 0x0,_

我还xcrun simctl list查看了 Xcode 12 beta 的可用运行时模拟器。它显示了以下列表,但在构建时失败。

== 运行时 ==

iOS 14.0 (14.0 - 18A5319g) -
com.apple.CoreSimulator.SimRuntime.iOS-14-0
tvOS 14.0 (14.0 - 18J5331g) -
com.apple.CoreSimulator.SimRuntime.tvOS-14-0
watchOS 7.0 (7.0 - 18R5327h) -
com.apple.CoreSimulator.SimRuntime.watchOS-7-0

== 设备 ==

当我打开 Xcode 设置并单击组件 -> 模拟器时,我在列表中看不到iOS 14

谁能帮我解决这个问题?

4

3 回答 3

3

我在 Jenkins 上使用 Xcode 12 beta 构建了类似的问题。当我使用 jenkins 用户在终端中运行xcrun simctl list时,我看到了

== Runtimes ==
iOS 14.0 (14.0 - 18A5351d) - com.apple.CoreSimulator.SimRuntime.iOS-14-0
tvOS 14.0 (14.0 - 18J5364d) - com.apple.CoreSimulator.SimRuntime.tvOS-14-0
watchOS 7.0 (7.0 - 18R5361c) - com.apple.CoreSimulator.SimRuntime.watchOS-7-0

但是如果我把相同的 simctl 命令由 Jenkins 作业执行,结果是

== Runtimes ==
iOS 14.0 (14.0 - 18A5351d) - com.apple.CoreSimulator.SimRuntime.iOS-14-0 (unavailable, failed to open liblaunch_sim.dylib)
tvOS 14.0 (14.0 - 18J5364d) - com.apple.CoreSimulator.SimRuntime.tvOS-14-0 (unavailable, failed to open liblaunch_sim.dylib)
watchOS 7.0 (7.0 - 18R5361c) - com.apple.CoreSimulator.SimRuntime.watchOS-7-0 (unavailable, failed to open liblaunch_sim.dylib)

虽然我找不到解决方案,但我找到了解决方法。如果我阻止 Jenkins 作为启动守护程序运行并从终端手动启动它,那么 Xcode beta 构建运行良好。

# Stop Jenkins
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

# Impersonate jenkins user
sudo su - jenkins

# Tell Jenkins where its home dir is located
export JENKINS_HOME=/Users/Shared/Jenkins/Home

# Start Jenkins instance
/Library/Application\ Support/Jenkins/jenkins-runner.sh

以上所有路径都是默认路径。如果您碰巧不同,您可能会在文件 /Library/LaunchDaemons/org.jenkins-ci.plist 中找到正确的值

于 2020-08-25T15:36:16.220 回答
3

此命令可以解决问题:

sudo xcrun simctl shutdown all && sudo xcrun simctl erase all

我在这里找到了它:https ://developer.apple.com/forums/thread/653807

于 2020-10-16T15:08:09.767 回答
2

我在 Xcode 12.1 上使用默认安装的 Jenkins 看到了这个问题。这些解决方案都不起作用,“手动运行 sh 脚本”导致 Jenkins 甚至根本无法加载。

我正在对看起来像这样的设备(不是模拟器)使用构建命令:

/usr/bin/xcodebuild -scheme MyApp -workspace MyApp.xcworkspace -configuration Debug clean build DEVELOPMENT_TEAM=XXXXXXXXXX -allowProvisioningUpdates test -destination platform=iOS,id=theIDofADeviceNotASimulator

当我从常规管理控制台用户的命令提示符运行此命令时,该命令运行良好,但不是从 Jenkins。

Jenkins 通常安装在自己的/users/Shared/Jenkins帐户下。

另外,我看到在 Xcode 12.2 发行说明(我在 12.1)中仍然存在一个“已知问题”,表示从非 root LaunchDaemon 运行 simctl 或 xcodebuild 等命令行工具时,模拟器可能不可用,或者当以与当前用户不同的用户身份启动时(例如,使用 sudo 或 launchctl)。(62188195) - https://developer.apple.com/documentation/xcode-release-notes/xcode-12_2-beta-release-notes

该问题似乎存在于设备和模拟器上。

更新解决方案是在您的普通用户下使用自制软件重新安装 Jenkins,让它们自动登录,然后使用附加到该用户的 LaunchAgent 在您的用户登录时启动 jenkins。

Jenkins 不再支持使用“jenkins 用户”安装并作为 LaunchDaemon 运行,Xcode 也不支持。

于 2020-10-23T16:33:21.730 回答