Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行
Posted
技术标签:
【中文标题】Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行【英文标题】:Cocoapods won't work on new m1 mac Big Sur Xcode 【发布时间】:2021-03-31 17:11:57 【问题描述】:我正在摆脱我 8 岁的 mac,并正在切换到新的 m1 macbook air,但我的旧项目都没有运行。我已经成功安装了 cocoapods,但是我的很多大项目都遇到了错误,即使在更新了所有 pod 并通过 Rosetta 运行所有内容之后也是如此。以下是我在 Xcode 中遇到的一些错误:
找不到目标的模块“PodName” 'x86_64-apple-ios-simulator';找到:arm64,arm64-apple-ios-simulator
没有这样的模块'PodName'
这些只是其中的一小部分,遇到了很多错误。我尝试更新这些 pod,重新安装它们等,但没有任何效果。有没有使用 m1 mac 的人在这方面取得过任何成功?
【问题讨论】:
你可以试试这个问题的最佳答案。 link here 【参考方案1】:您可以调整项目架构或在 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 包管理器效果更好,这实际上非常令人失望,但我们到了。再次感谢@Ichamp。 如果尽管使用了这个解决方案,你仍然得到一个错误,你需要检查项目的 iOS 部署目标。我应该最低iOS12。在我的项目中,它是 iOS11,在您的目标上将其更新为 iOS12,并且不要忘记在 podfile 上将其更改为平台:ios,'12.0'。【参考方案2】:这似乎与此问题和答案有关:Xcode 12, building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
基本上你需要做的是确保:
正在构建的架构设置为标准架构 (ARCHS_STANDARD
)
为任何 iOS 模拟器添加“排除”架构设置并将其设置为 arm64
这应该可以让您启动并运行。
有一点需要注意(这让我很着迷):确保您没有拥有“有效架构”的构建设置 (VALID_ARCHS
)。如果这样做,请完全删除该行。它给我带来了问题,因为它实际上忽略了 Apple 希望我们使用的新范式(架构 + 排除架构)。
最后,如果您没有看到 VALID_ARCHS
但您仍然无法运行它,那么对我有用的一件事(因为我也回到了一个旧项目)是:
VALID_ARCHS
并将其设置为标准架构
构建应用程序(按预期获取错误)
删除该行
重新构建应用程序
【讨论】:
@KazimWalji 如果可行,请将此答案标记为已接受的答案。 谢谢你。只需将 arm64 添加到排除的拱门对我有用!【参考方案3】:这让我很困惑。
您需要在项目中的 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 架构编译您的 pod。为此,请运行以下命令:
arch -x86_64 pod install
您可以查看构建多架构的完整解决方案here。
【讨论】:
以上是关于Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行的主要内容,如果未能解决你的问题,请参考以下文章
来自 Electron 的 M1 mac 上的 Emacs 崩溃
在 Mac 10.12 上使用哪个 cocoapods 版本,如果 Restkit 是依赖项