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

Kaz*_*lji 4 xcode cocoapods macos-big-sur apple-m1

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

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

没有这样的模块“PodName”

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

ser*_*enn 6

这似乎可能与这里的问题和答案有关:Xcode 12, Building for iOS Simulator, but linking in object filebuilt for iOS, for Architecture arm64

基本上,您需要做的是确保:

  • 正在构建的架构设置为标准架构 ( ARCHS_STANDARD)
  • 您为任何 iOS 模拟器添加“排除”架构设置并将其设置为arm64

这应该能让你启动并运行。

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

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

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


lch*_*amp 5

您可以调整项目架构或在 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
Run Code Online (Sandbox Code Playgroud)

  • “arm64”是M1的架构对吗?为什么我们需要排除它?没有道理.. (4认同)