今天爱分享给大家带来XCode 12 跑模拟器编译报错building for iOS Simulator, but linking in object file built for iOS, xxxx for architecture arm64,希望能够帮助到大家。
报错内容:
building for iOS Simulator, but linking in object file built for iOS, xxxx for architecture arm64
项目再迁移到XCode12 的时候跑模拟器遇到了下面这个报错。真机没有问题
在Stack Overflow: xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios上查大多数都给出了在build settings->excluded architectures 中添加arm64架构的解决方案,但这个对于我们的项目没有用。
XCode 12以前,我们通过Valid Architectures 来配置支持的机型。
(我们项目对5s以前的armv7 armv7s 机型不做机型支持,就没有这两项。可根据具体项目支持机型配置。)
但在XCode12中, Valid Architectures 这一项被移除掉了,改变成了 VALID_ARCHS的栏目。
解决方案1:
在 VALID_ARCHS 添加上 x86_64的模拟器机型配置 如图:
pod 库如果有设置也对应添加x86_64
注:在生成上线的时候需要把x84_64去掉即可。
解决方案2:
提出来pod 库 注释掉 config.build_settings[‘VALID_ARCHS’] = ‘arm64 arm64e’ 这行代码。
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '4.2' // 适配XCode12 把下面这行注释掉 #config.build_settings['VALID_ARCHS'] = 'arm64 arm64e' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0' end end end
并且清空build settings->VALID_ARCHS里面的内容即可。
解决方案3:
通过设置Exclude Architectures->Debug为arm64也可以解决这个问题。 具体的方案可见评论区。
原因:
在XCode11中 x86_64的机型支持是默认添加上的,就算不写也支持,但XCode12的时候 苹果推出了arm主机的Mac, 这使得arm主机的XCode其实就不需要x86_64的默认支持了。 这个时候x86_64也就不是默认添加,需要手动添加上才能在Mac上跑得动模拟器。