Xcode 10.2 在模拟器上无法运行 iOS < 10 的应用程序

77
自从更新了Xcode 10.2后,我在任何iOS版本低于10的模拟器上尝试运行我的应用程序时,模拟器都无法启动,并且崩溃,然后显示以下错误:

dyld:未加载库:/usr/lib/libauto.dylib 参考自: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 原因:未找到合适的映像。 已经发现: /usr/lib/libauto.dylib: mach-o,但不是为iOS模拟器构建的

我试图新建一个全新的项目,将部署目标设置为iOS 9并再次在iOS 9模拟器上运行,结果显示相同的错误。 更新 似乎只有当您的代码库包含Swift时,才会出现此问题。使用Objective-C代码库创建的新项目不会使模拟器崩溃,但使用Swift会。 总结
  1. Xcode 10.2中包含Swift代码,无法在iOS 9模拟器上运行应用程序
  2. 我已经清理和删除派生数据,问题仍然存在。
有人有任何想法吗? 最终更新 Apple刚刚发布了Xcode 10.2.1,这是模拟器的已知问题之一,请参阅下面的链接以获取解决方法/修复方法:

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_1_release_notes

感谢 @russbishop 的回复,答案已接受。


我有完全相同的问题,使用相同的Xcode版本。尝试了清理/重新安装。甚至尝试了一些关于配置文件/证书的魔法。仍然无法工作。 - Konstantin
这个错误只出现在模拟器上吗?还是在iOS 9.3设备上也会出现破解? - Bridger Maxwell
它在真实设备9.3.5上运行正常,但在模拟器上无法工作。 - ko2ic
非常好的报告,感谢您一直坚持到解决方案。 - matt
9个回答

110

这是一个已知的影响iOS 8.x和9.x的漏洞。您可以通过在相应模拟器运行时根目录中创建/usr/lib/swift目录来解决它。

下载的模拟器运行时位于/Library/Developer/CoreSimulator/Profiles/Runtimes

例如,要修复iOS 9.3模拟器:

sudo mkdir '/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 9.3.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift'

7
在运行mkdir之前,请确保“iOS 9.3.simruntime”不存在。 对我来说,“... / RuntimeRoot / usr / lib / swift”缺少“swift”文件夹。只需导航到“/ Library / Developer / CoreSimulator / Profiles / Runtimes / iOS 9.3.simruntime / Contents / Resources / RuntimeRoot / usr / lib”,并为“swift”创建一个目录即可解决问题。 - bauerMusic
我尝试了无数的解决方案,只有这一个起作用了。非常感谢! - Fan Jin

13

当在iOS 9.0模拟器中运行时,我也遇到了相同的问题。

来源于https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_1_release_notes

iOS 9.3及更早版本的模拟器可能会因消息“dyld: Library not loaded: /usr/lib/libauto.dylib”而无法启动Swift应用程序。(49326587)解决方法:针对相关版本的iOS,在终端中运行以下命令:

sudo mkdir '/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 9.3.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift'

针对上述给出的苹果解决方案,请按照以下步骤操作:

1. 打开终端

2. 输入如下命令,并将版本改为您需要使用的版本(例如我将其从iOS 9.3更改为iOS 9.0):
sudo mkdir '/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 9.0.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift'

3. 输入密码

4. 现在清理Xcode并再次运行

以上方法对我有效。


8

这似乎是iOS模拟器的一个bug。我在运行iOS 12.0版本的模拟器上看到了这种情况,但在运行12.4版本的模拟器上则没有。


这拯救了我的理智!!是的,似乎只是模拟器12.0的一个bug。 - user1366265

5

在 Xcode 10.3 中仍会出现这个错误。(在 10.2 版本上跳过了此问题。)


1
这不是 Swift 10.3。 - Naresh

4

在进行 Xcode11.1 上的 iOS11iOS12.1 单元测试时,我遇到了这个问题。

解决方法就是使用 iOS13 模拟器来运行单元测试。


2

一个相当烦人的解决方法:现在使用Xcode 10.1在9.x模拟器上部署。这是我能够规避此问题的唯一方法。


2
如果有人的项目转移到了Swift 5,这将无法工作。 - Ratul Sharker
2
是的,非常好的观点。只需参考顶部答案和官方解决方法:sudo mkdir '/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 9.3.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift' - cumanzor
"找不到文件或目录" - Pedro Paulo Amorim

2

以上的方法都没有解决我的问题。 我的问题与此类似,但是我在为 macOS 构建应用程序。

我运行的是 Xcode 11 项目目标 10.4,而我的操作系统是 Mojave 10.4.6

我不得不安装 Xcode 10.3 并使用它。自那以后就没有出现问题了。

我猜测这是操作系统、Xcode 版本和项目目标之间的问题。


1
值得注意的是,Xcode 11 + Catalina不再支持iOS9.x模拟器。 - cumanzor

0

在使用Xcode 10.2.1时,我遇到了另一个库的问题,最终不得不在构建设置中将“始终嵌入Swift库”设置为YES,因为我所使用的库位于框架文件中。


-1

升级到Xcode 10.3已经为我解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接