如何解决在旧版MacOS应用中为任何MacApple Silicon,Intel激活Build
我想将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 / Macbook具有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不具有macOS 11 SDK,您需要为MacOS 11 SDK进行编译。在macOS 11发行之前,您将必须下载Xcode 12的beta版本,其中包括macOS 11 SDK,例如Xcode 12.2 beta。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。