Cocoapods 不适用于新的 m1 mac Big Sur Xcode

问题描述

我正在摆脱我 8 岁的旧 mac,并切换到新的 m1 macbook air,但我的旧项目都没有运行。我已经成功安装了 cocoapods,但是我的很多大项目都遇到了错误,即使在更新所有 pod 并通过 Rosetta 运行所有内容之后也是如此。以下是我在 Xcode 中遇到的一些错误:

找不到目标的模块“PodName” 'x86_64-apple-ios-模拟器';发现:arm64,arm64-apple-ios-simulator

没有这样的模块'PodName'

这些只是少数,遇到了很多错误。我尝试更新这些 pod,重新安装它们等,但没有任何效果。有没有人用 m1 mac 成功过这个?

解决方法

您可以调整项目架构或在 Podfile 的最后添加以下内容(并再次运行 pod update):

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

这似乎与这里的问题和答案有关:Xcode 12,building for iOS Simulator,but linking in object file built for iOS,for architecture arm64

基本上你需要做的是确保:

  • 正在构建的架构设置为标准架构 (ARCHS_STANDARD)
  • 为 Any iOS Simulator 添加“排除”架构设置并将其设置为 arm64

这应该能让你开始工作。

需要注意的一件事(让我困扰了一段时间):确保您没有具有“有效架构”(VALID_ARCHS) 的构建设置。如果这样做,请完全删除该行。它给我带来了问题,因为它实际上忽略了 Apple 希望我们使用的新范式(架构 + 排除的架构)。

最后,如果您没有看到 VALID_ARCHS 但仍然无法运行它,对我有用的一件事(因为我也回到了一个旧项目)是:

  • 添加 VALID_ARCHS 并将其设置为标准架构
  • 构建应用(按预期获取错误)
  • 删除该行
  • 重新构建应用

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...