我正在尝试在Xcode 12(beta 5)中构建一个大型(正在开发Xcode 11!)项目,为iOS 14做准备。代码库以前是Objective-C中的,但现在它同时包含Objective-C和Swift,并使用Objective-C或Swift的pod。

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

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

为iOS模拟器构建,但链接到为iOS构建的对象文件中,用于体系结构arm64

以及可能的错误:

无法加载目标“arm64-apple-ios11.0”的标准库

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

此前,该项目的有效架构设置为:armv7、armv7s和arm64。

在Xcode 12中,根据苹果的文档,该设置将消失。架构设置为$(ARCH_STANDARD)。我在排除的架构中没有任何设置。

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


当前回答

我发现了

使用Rosetta(在Finder中查找Xcode>获取信息>使用Rosetta打开)在项目和目标中,仅将“构建活动体系结构”设置为“是”(您可能不需要它,请阅读下面的评论)并将其包含在podfile中:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
    end
  end
end

为我工作。

我们有Pods和SPM,但它们不能处理其他答案的任何组合。我的同事们都使用Intel MacBook,一切仍然适用于他们!

其他回答

轻松修复

右键单击Applications文件夹中的xcode获取信息选择“使用Rosetta打开”

Run.

Xcode获取信息

节省时间的敬礼。

转到->应用程序->Xcode->右键单击Xcode->单击获取信息->使用rosetta选择打开。

请确保它在你的pod文件中,删除它。config.build_settings['ARCHS[sdk=iphonesimulator*]']=uname-m

[]

如果你的问题没有解决,也可以试试这个

从项目目录中删除所有突出显示的文件,并通过“pod安装”重新安装pod。

所有这些答案中隐藏的宝石

我在主要项目的目标中更改了“排除架构”,但在PODS项目中没有更改。这是一块真正隐藏的宝石。我已经处理这个问题好几个星期了。

请参阅此技术说明:https://developer.apple.com/documentation/technotes/tn3117-resolving-build-errors-for-apple-silicon排除模拟器的臂64应该是一个临时解决方案。

排除arm64后,我总是得到ARCHS[@]:未绑定变量。对我来说,唯一的解决方案是将x86_64添加到此处提到的目标构建设置中。升级到Xcode 12:ld:building For iOS Simulator后出现问题,但链接到dylib build For iOS,架构arm64。您也可以删除之前添加的exclude arm64。