Cocoapods在新的M1芯片的Big Sur操作系统上无法正常工作,Xcode也有同样的问题。

7

我要丢掉我八年前的Mac电脑,转而使用新的M1 MacBook Air,但我的旧项目都无法运行。我已经成功安装了Cocoapods,但是我的许多大型项目都遇到了错误,即使更新了所有的pod并通过Rosetta运行所有内容也不行。以下是我在Xcode中遇到的一些错误:

找不到 'PodName' 模块以供目标 'x86_64-apple-ios-simulator' 使用;找到的是:arm64、arm64-apple-ios-simulator

没有此类模块 'PodName'

这只是其中几个,我遇到了很多错误。我尝试过更新这些pod,重新安装它们等等,但都没有起作用。有没有使用M1 Mac的用户能够成功解决这个问题?


你可以尝试这个问题的最佳答案。链接在此 - Bomi Chen
4个回答

10

您可以调整项目架构,或在 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

这是最后一步,让我明白了。也许其他每一件事都有所帮助,也许没有(我相信它们都有),但如果没有这最后一步,模拟器中什么都无法构建。设备上的构建还好。感谢您。这实际上比使用Swift Package Manager更好,而后者实际上相当令人失望,但我们在这里。再次感谢@Ichamp。 - ChrisH
如果您尝试了这个解决方案仍然出现错误,您需要检查项目的iOS部署目标。它应该是最低iOS12版本。在我的项目中,它是iOS11,您需要将其更新为iOS12,并在podfile中更改平台:ios,'12.0'。 - Ali Seymen
4
"arm64" 是 M1 的架构,对吗?为什么我们需要排除它?这没有意义。 - Hlung
...然后在随机的SO帖子上隐藏了3个答案。 这就是我寻找了几天的答案。 谢谢@lchamp! - groteworld
使用 M1 芯片系统,如果我们将此代码添加到 Pod 文件中,则会将“arm64”添加到所有 Pod 项目中,而不是主要的 Pod Target。我们如何将其添加到主要的 Pod Target 中呢? - Shiv Kumar
Pod install就足够了 - Victor Carmouze

6

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

基本上,您需要确保:

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

那应该可以让您开始运行。

需要注意的一件事(让我卡了一段时间):确保您没有“有效架构”(VALID_ARCHS)的构建设置。如果有,请完全删除该行。它对我造成了问题,因为它实际上忽略了苹果想要我们使用的新范例(架构+排除架构)。

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

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

谢谢您。只需将arm64添加到排除的架构中即可解决我的问题! - Ibdakine

2
这让我困扰了很长时间。
您需要在项目的pod文件中添加以下行。
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"

为每个构建配置添加它。完成此操作的完整代码如下:

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

在 M1 机器上,您需要使用 x86_64 架构编译您的 pods。要执行此操作,请运行以下命令:

arch -x86_64 pod install

您可以在此处查看构建多个架构的完整解决方案

"arch -x86_64 pod install" 对我很有帮助,真是救命稻草,谢谢! - bsoykal

1
打开您的构建设置(Build Settings),将Excluded Architectures的值设置为arm64

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接