我正在尝试在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)。我在排除的架构中没有任何设置。

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


当前回答

这里的问题是Xcode 11中的有效架构。在Xcode 11中打开项目,并将项目、目标和Pods的Valid架构值更改为$(ARCHS_SESTANDARD)。在Xcode 12中重新打开项目并构建。

其他回答

X代码12.3

我通过将“验证工作区”设置为“是”来解决此问题

在xxx.framework podspec文件中,添加以下配置。避免使用包含arm64模拟器架构的pod包。

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

我面临着同样的问题,并试图在M1 Mac上启动React Native应用程序。请注意,我的Intel Mac与相同的项目运行良好,没有此错误。

对我来说,解决问题的是通过Rosetta强制Xcode打开。

要做到这一点:

右键单击Applications文件夹中的Xcode*→ 获取信息→ 选中“使用Rosetta打开”复选框。

我通过在项目目标和pod目标的“排除架构”中添加“arm64”来解决这个问题。

X代码→ 目标项目→ 生成设置→ 排除的体系结构→ *“臂64”

X代码→ 吊舱目标→ 生成设置→ 排除的体系结构→ *“臂64”

在我的案例中,错误是由GTMAppAuth引发的,我在Flutter项目中使用的是谷歌签名。

解决方案:您必须转到该包,然后在“仅构建活动体系结构”中单击“是”。