Cocoapods 项目无法在 Apple Silicon / M1 上构建 Mac

Cocoapods project fails to build on an Apple Silicon / M1 Mac

在您认为这是重复之前:

关于这个失败有几个 posts,但大多数是旧的 posts 与 M1 Mac 无关,有些有相互矛盾的解决方案。 post 仅适用于使用具有以下设置的 Cocoapods 的 M1 Mac:

设置

问题

编译项目(在英特尔计算机上运行)会为来自 Google 的 NearbyMessages 库产生以下错误:

In /Users/user/Pods/NearbyMessages/Libraries/libGNSMessages.a(GNSAudioModem.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/user/Pods/NearbyMessages/Libraries/libGNSMessages.a' for architecture arm64

最常见的建议是将 arm64 添加到“Excluded Architectures”并将“Build Active Architectures Only”设置为 YES(默认)。 Other posts 说后者应该是NO。将此设置为否会给我错误 No such module 'RxSwift'.

将 arm64 添加到“排除的架构”也意味着我需要将以下 post 安装到 Pod 文件中的所有生成项目(因为我使用 generate_multiple_pod_projects):

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      end
    end
  end
end

我想了解的是这是否是正确的方法。不要只是尝试不同的设置并希望获得最好的结果,而是要了解为什么这会有所帮助。 M1 芯片是 arm64 为什么要排除 arm64?我使用了错误的解决方案吗?任何帮助将不胜感激。

NearbyMessages 二进制 pod 分发版尚未更新以支持 M1 Mac。因此无法将其 link 放入应用程序中并为模拟器构建它。

config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64e"

最初以e结尾。