为iOS模拟器构建Xcode,但链接到为iOS和体系结构构建的目标文件中。

人气:327 发布:2022-10-16 标签: ios xcode xcode12 xcode12beta5 xcode12beta6

问题描述

我正在尝试获得一个大的(并在Xcode11上工作!)在Xcode 12(测试版5)中构建项目,为iOS 14做准备。以前的代码库位于Objective-C中,但现在它同时包含了Objective-C和SWIFT,并且还使用了Objective-C和/或SWIFT的Pod。

我已经拉出了支持Xcode 12的CocoaPods的新测试版(当前为1.10.0.beta 2)。

Pod安装成功。当我进行构建时,我在Pod框架上得到以下错误:

为iOS模拟器构建,但链接到为iOS和体系结构ARM构建的目标文件64

可能还有错误:

无法加载目标‘arm64-Apple-ios11.0’的标准库

当我在框架上运行lipo -info时,它有:armv7s ARMv7 i386 x86_64 arm64。

以前,项目将有效体系结构设置为:ARMv7、armv7s和arm64。

根据苹果的文档,在Xcode12中,该设置消失了。架构设置为$(ARCS_STANDARD)。我没有在排除的体系结构中设置任何内容。

这里可能发生了什么?我还不能用一个更简单的项目重现这一点。

推荐答案

基本上,您必须从您的项目和Pod项目中排除模拟器架构的arm64

为此,请导航到项目的构建设置,并在排除的体系结构内添加任何iOS模拟器SDK。

如果您使用的是自定义XCConfig文件,则只需添加此行即可排除模拟器架构。

EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64

然后

您必须对Pod项目执行相同的操作,直到所有可可Pod供应商完成在PodSpec中添加以下内容。

s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }

您可以在Pod项目的生成设置中手动添加排除的体系结构,但当您 使用pod install

作为替代,您可以在Podfile中添加此代码段。它将在您每次运行pod install时写入必要的生成设置。

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end

795