报错内容:
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上跑得动模拟器。
感悟:
解决这个问题大概花了大半天时间,跟着Stack Overflow 和 苹果论坛的解决方案找了很多弯路。 可能静下心想想或者试一下自己也能找到问题的原因。
最后分享一下关于适配XCode12 + iOS14 tableView ContentView 层级改变的苹果bug的探究
结交人脉
最后推荐个我的iOS交流群:789143298
'有一个共同的圈子很重要,结识人脉!里面都是iOS开发,全栈发展,欢迎入驻,共同进步!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)
-
——点击加入:iOS开发交流群
以下资料在群文件可自行下载
网友评论