Xcode 12 问题 - 找不到目标 'arm64-apple-ios-simulator' 的模块 'FrameworkName';找到:x86_64-apple-ios-simulator、x86_64

Xcode 12 issue - Could not find module 'FrameworkName' for target 'arm64-apple-ios-simulator'; found: x86_64-apple-ios-simulator, x86_64

更新到 Xcode 12 后,项目在模拟器上构建时出现此错误:

Could not find module 'FrameworkName' for target 'arm64-apple-ios-simulator'; found: x86_64-apple-ios-simulator, x86_64

框架是用cocoapods安装的。 它与 Xcode 11 一起工作。在“任何 iOS 设备”或带有 Xcode 12 的真实 iPhone 上构建也可以正常工作。 Xcode 12 有什么不同?

您可以尝试删除应用的派生数据,然后清理并构建应用,您可以按照以下步骤操作link https://programmingwithswift.com/delete-derived-data-xcode/

我通过确保构建设置 VALID_ARCHS(现在出现在 Xcode 12 中构建设置的底部)包含“x86_64”来解决此问题。

即:

  • 之前我有:VALID_ARCHS = arm64, arm64e
  • 修复后:VALID_ARCHS = arm64, arm64e, x86_64

(有点违反直觉,因为错误消息说它找不到 arm64-apple-ios-simulator 的模块,:shrug:)

您可以尝试为任何 iOS Simulator SDK 设置 $(ARCHS_STANDARD)VALID_ARCHS 进行调试,为调试设置 YESONLY_ACTIVE_ARCH。它对我有用。

当您修改项目以适应新的 M1 Macs,然后尝试 运行 英特尔 Mac 上的同一项目时,可能会出现这种情况。

它基本上尝试在 ARM 架构上 运行 并找到 X86_64。

要解决此问题,您只需将构建操作限制为仅活动 (X86_64) 架构。

您可以通过将“仅构建活动架构”设置为“是”来执行此操作。

我解决了这个问题,方法是在 app Target 和 test Target for Debug 中排除 arm64,如下图所示。

测试并处理 Xcode 13.

我们的图书馆应用程序出现此错误,这解决了我的问题:

关闭XCode

打开 Finder 应用并显示“应用程序”

右键单击图标 Xcode,然后单击“获取信息”(或类似内容)

有复选框“用 Rosseta 打开”(或类似的东西)。 Select它

运行 Xcode 再次尝试构建

https://developer.apple.com/forums/thread/123614?login=true

在最新版本的 Xcode 中,(Xcode 13.2) VALID_ARCHS 的选项不再可用。所以我决定在 Xcode 中将测试设备从模拟器切换到物理设备。当 运行 在测试设备

上时,我没有遇到问题

对于基于 M1 芯片的 Mac 按照以下说明进行操作..

Applications > Xcode > Get Info> checked "Open using Rosetta"

就是这样,你可以开始了。

在 Xcode 13.3.1,Apple M1 Pro

中测试