Cocoapods 项目无法在 Apple Silicon / M1 上构建 Mac
Cocoapods project fails to build on an Apple Silicon / M1 Mac
在您认为这是重复之前:
关于这个失败有几个 posts,但大多数是旧的 posts 与 M1 Mac 无关,有些有相互矛盾的解决方案。 post 仅适用于使用具有以下设置的 Cocoapods 的 M1 Mac:
设置
- Cocoapods 1.10.1
- Cocoapods 配置已启用
generate_multiple_pod_projects
和 incremental_installation
- 终端设置为使用 Rosetta 2 来解决 Cocoapods 的问题
- 使用了多个库,例如 Firebase、RxSwift 等和 NearbyMessages
问题
编译项目(在英特尔计算机上运行)会为来自 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结尾。
在您认为这是重复之前:
关于这个失败有几个 posts,但大多数是旧的 posts 与 M1 Mac 无关,有些有相互矛盾的解决方案。 post 仅适用于使用具有以下设置的 Cocoapods 的 M1 Mac:
设置
- Cocoapods 1.10.1
- Cocoapods 配置已启用
generate_multiple_pod_projects
和incremental_installation
- 终端设置为使用 Rosetta 2 来解决 Cocoapods 的问题
- 使用了多个库,例如 Firebase、RxSwift 等和 NearbyMessages
问题
编译项目(在英特尔计算机上运行)会为来自 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结尾。