SQLite.swift 和M1芯片及模拟器
SQLite.swift and M1 chip and simulator
我有一个使用 SQLite.swift
的项目。最近我买了一台带有 M1
芯片的 MacBook Pro。之后,项目 运行 在设备上运行良好,但是当我尝试在模拟器上 运行 时,我从 Xcode:
收到此错误消息
Could not find module 'SQLite' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator.
我使用 cocoa pods 将 SQLite.swift
添加到我的项目中。我试图将其移至 SPM
但错误仍然存在。
搜索此错误后,我找到了解决方法:使用此选项打开 Xcode:Open using Rosetta
,但这对我来说似乎是一个 hack。
这可以在 SQLite.swift 级别以某种方式解决吗?
SQLite.swift
版本 0.13.0
Xcode
13.2.1
谢谢。
您的项目正在尝试为 x86_64 构建,这将使它在 Rosetta 翻译下成为 运行。 SQLite.swift 正在为 arm64 正确构建,并将 运行 在模拟器中的 M1 上原生。由于 mis-match 整体构建失败。你绝对正确,在 Rosetta 下打开 Xcode 是一种黑客行为,你这样做会付出内存 + 性能的代价。
我建议检查您的 ARCHS 和 EXCLUDED_ARCHS 构建设置,以及您的其他依赖项。如果您的二进制依赖项尚未更新以支持 Simulator arm64,这可能会导致 Cocoapods 将架构强制为 x86_64。或者,您可能很久以前就设置了这些构建设置,但从未意识到。
今天正确的设置方法是:
- 切勿触摸 ARCHS 或 SUPPORTED_ARCHS
- 除非你有一个尚未更新的二进制依赖项,否则不要设置 EXCLUDED_ARCHS
默认情况下,Xcode 将使用您的 Mac 的本机架构为模拟器构建。在 Debug 构建中,它只构建一个架构,对于 Release,它构建所有支持的架构(这可能会有所不同,具体取决于您的 运行 目标是什么)。在这方面,模拟器与设备构建没有任何不同。
我有一个使用 SQLite.swift
的项目。最近我买了一台带有 M1
芯片的 MacBook Pro。之后,项目 运行 在设备上运行良好,但是当我尝试在模拟器上 运行 时,我从 Xcode:
Could not find module 'SQLite' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator.
我使用 cocoa pods 将 SQLite.swift
添加到我的项目中。我试图将其移至 SPM
但错误仍然存在。
搜索此错误后,我找到了解决方法:使用此选项打开 Xcode:Open using Rosetta
,但这对我来说似乎是一个 hack。
这可以在 SQLite.swift 级别以某种方式解决吗?
SQLite.swift
版本 0.13.0Xcode
13.2.1
谢谢。
您的项目正在尝试为 x86_64 构建,这将使它在 Rosetta 翻译下成为 运行。 SQLite.swift 正在为 arm64 正确构建,并将 运行 在模拟器中的 M1 上原生。由于 mis-match 整体构建失败。你绝对正确,在 Rosetta 下打开 Xcode 是一种黑客行为,你这样做会付出内存 + 性能的代价。
我建议检查您的 ARCHS 和 EXCLUDED_ARCHS 构建设置,以及您的其他依赖项。如果您的二进制依赖项尚未更新以支持 Simulator arm64,这可能会导致 Cocoapods 将架构强制为 x86_64。或者,您可能很久以前就设置了这些构建设置,但从未意识到。
今天正确的设置方法是:
- 切勿触摸 ARCHS 或 SUPPORTED_ARCHS
- 除非你有一个尚未更新的二进制依赖项,否则不要设置 EXCLUDED_ARCHS
默认情况下,Xcode 将使用您的 Mac 的本机架构为模拟器构建。在 Debug 构建中,它只构建一个架构,对于 Release,它构建所有支持的架构(这可能会有所不同,具体取决于您的 运行 目标是什么)。在这方面,模拟器与设备构建没有任何不同。