我想把我的MacApp移植到一个通用的版本,包括新的苹果硅Arm64芯片的二进制文件。
除了使用Xcode 12.1,使用标准架构构建设置之外,我还需要做什么?我的方案只显示任何Mac (Intel)
发布于 2020-10-31 03:04:09
你绝对应该阅读苹果关于这个话题的官方指南:https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary
这个过程在那里被很好地覆盖了。
此外,苹果还为苹果硅谷提供了另一个指南:https://developer.apple.com/documentation/xcode/porting_your_macos_apps_to_apple_silicon
这也是一本必读的书。
因此,第一步显然是更新架构列表。目前的MacMini/Macbook有x86_64,Apple Silicon有arm64等。
你应该编译,并逐一删除所有的编译错误。
在为Apple Silicon构建应用程序时,我遇到了以下问题:
苹果包装平台特定代码(此标题复制自教程:) )
例如:
#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构建fat库(这是一个自定义解释:) )
您的应用程序可以使用任何C/C++静态/动态库,如Curl、OpenSSL等。为了使应用程序具有通用性,您应该确保所有这些库都包含所有平台的代码。在这里,lipo将是你的朋友(这在指南中也有介绍)。为Apple Silicon构建静态库的一个示例:https://cutecoder.org/programming/compile-open-ssl-apple-silicon/
我不确定我已经完全覆盖了你的问题,所以请询问更多细节,我会澄清的。
发布于 2020-10-31 04:01:33
Xcode12.1没有macOS 11SDK,你需要为Apple Silicon编译它。在Xcode11发布之前,您必须下载包含macOS 11SDK的Xcode12的测试版,例如Xcode12.2测试版。
https://stackoverflow.com/questions/64613022
复制相似问题