我想将我的 MacApp 移植到一个通用版本,包括新 Apple Silicon Arm64 芯片的二进制文件。
除了在 Xcode 12.1 上使用标准架构构建设置,我还需要做什么?我的方案只显示 Any Mac (Intel)
我想将我的 MacApp 移植到一个通用版本,包括新 Apple Silicon Arm64 芯片的二进制文件。
除了在 Xcode 12.1 上使用标准架构构建设置,我还需要做什么?我的方案只显示 Any Mac (Intel)
您绝对应该阅读有关此主题的 Apple 官方指南:https
://developer.apple.com/documentation/xcode/building_a_universal_macos_binary
那里很好地介绍了该过程。
此外,Apple 还有一份 Apple Silicon 指南:https
://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon
这也是必读的。
所以第一步显然是更新架构列表。目前的 MacMini/Macbooks 有x86_64
,Apple Silicon 有arm64
等等。
您应该编译并一一删除所有编译错误。
在为 Apple Silicon 构建我的应用程序时,我遇到了这样的问题:
包装特定于平台的代码(此标题复制自 Apple 教程 :))
例如
#if os(macOS)
// Put CPU-independent macOS code here.
#if arch(arm64)
// Put 64-bit arm64 Mac code here.
#elseif arch(x86_64)
// Put 64-bit x86_64 Mac code here.
#endif
#elseif targetEnvironment(macCatalyst)
// Put Mac Catalyst-specific code here.
#elseif os(iOS)
// Put iOS-specific code here.
#endif
构建胖库(这是一个自定义解释:))
您的应用程序可以使用任何 C/C++ 静态/动态库,例如Curl
等OpenSSL
。为了使应用程序通用,您应该确保所有这些库都包含代码所有平台。
lipo
将成为您的朋友(这也包含在指南中)。为 Apple Silicon 构建静态库的示例:https ://cutecoder.org/programming/compile-open-ssl-apple-silicon/
我不确定我是否完全涵盖了您的问题,因此请询问更多详细信息,我会澄清一下。
Xcode 12.1 没有您需要为 Apple Silicon 编译的 macOS 11 SDK。在 macOS 11 发布之前,您必须下载包含 macOS 11 SDK 的 Xcode 12 测试版,例如 Xcode 12.2 测试版。