XCode 12 跑模拟器编译报错building for iOS Simulator, but linking in object file built for iOS, xxxx for architecture arm64

今天爱分享给大家带来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上跑得动模拟器。

人已赞赏
IOS

iOS14企业签名证书无法下载怎么办[已解决]

2020-10-18 18:14:11

IOS

iPhone X升级iOS 14卡不卡?

2020-10-18 18:35:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();