4

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

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

没有这样的模块“PodName”

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

4

4 回答 4

6

您可以调整项目架构或在 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
于 2020-12-22T21:56:48.347 回答
4

这似乎可能与这里的问题和答案有关: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并将其设置为标准架构
  • 构建应用程序(按预期获取错误)
  • 删除行
  • 重新构建应用程序
于 2020-12-22T12:24:18.727 回答
1

这让我难了好久。

您需要在项目中的 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

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

于 2021-12-14T14:24:02.357 回答
0

尝试以下步骤

  1. 关闭 XCode
  2. 打开 Finder 应用程序并在那里显示应用程序
  3. 右键单击图标 Xcode 并单击获取信息
  4. 有复选框用罗塞塔打开
  5. 再次运行 Xcode 并尝试构建

如果以上一个不能解决您的问题,请尝试以下解决方案,运行以下命令

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install
于 2022-02-28T16:19:13.853 回答