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

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


当前回答

转到“目标”部分,选择每个目标并执行以下操作:

将“仅构建活动体系结构”设置为“是”添加排除的体系结构并将其值设置为arm64(见附件)将活动方案(在项目名称旁边的工具栏上)设置为任何iOS模拟器从产品菜单中清除Build文件夹并生成。

其他回答

在我们的案例中,这是Jenkins构建中的一个错误:

框架/版本'xxx/Library/Developer/Xcode/DerivedData/xxx cuytrcyjdlfetmavpdonsknoypgk/构建/产品/调试iphoneos/AppsFlyerLib.framework/AppsFryerLib(AFSDKDevice.o),为iOS构建,但在为Mac Catalyst构建的对象文件中链接,文件'xxx/Library/Developer/Xcode/DerivedData/xxx cuytrcyjdlfetmavpdonsknoypgk/Build/Products/Debug-iphoneos/AppsFlyerLib.framework/AppsFlyerLib'用于体系结构arm64

我们用sudo gem更新cocapods修复了它。

截至2022年9月19日,所有现有答案都不适用于我。大多数答案建议将arm64从构建设置中排除,完成后,会出现致命错误:找不到模块映射文件

对我有用的是使用Rosseta打开Xcode,

右键单击应用程序文件夹中的Xcode显示简介使用Rosetta检查打开打开Xcode打开的项目清理生成文件夹运行项目

通过使用Rosseta打开Xcode,不需要其他构建设置或配置。

参考文献:

https://medium.com/timeless/starting-react-native-project-in-apple-mac-m1-chip-system-28da0c1f2132https://developer.apple.com/forums/thread/670006

在我的案例中:

我有四种配置(+DebugQa和ReleaseQa)。Cocoapods用作依赖关系管理器。

对于DebugQa,我在设备和模拟器上收集数据,而在ReleaseQa上只在设备上收集数据。

它有助于在PodsProject中将BuildActiveArchitecture设置为“yes”。

在下图中,在排除的体系结构中→ 在调试和释放中点击+按钮→ 在调试和发布中。

在我的例子中,我试图在发布模式下运行watchOS 7模拟器,但iOS 14模拟器处于调试模式。

因此,简单地将两个模拟器置于调试/发布模式就解决了我的问题!