OSX 10.x向后兼容性的最佳实践

uns*_*zed 4 macos xcode

我对OS X开发相对较新(使用XCode)

我最近测试了一个我一直在朋友MacBook上工作的应用程序,并遇到了一个问题.

我在运行Snow Leopard 10.6.5的MacBook上构建了应用程序,而我朋友的Mac运行的是早期版本(我认为Leopard 10.5.x).该应用程序没有启动,只是显示一条消息,说操作系统对于应用程序而言太旧了.

应用程序本身非常基础,不需要任何第三方库或API.

确保可以使用相同安装程序的最佳方法是什么?我不需要能够处理比10.4更早的任何东西.

Gui*_*ume 7

您需要将MACOSX_DEPLOYMENT_TARGET项目或应用程序的Mac OS X部署目标设置(密钥名称:)更改为您要支持的最旧的操作系统.

以下是有关如何更改目标的基本构建设置的文档:http://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Building/Building.html#//apple_ref/doc/uid/TP40010215-CH9-SW2

这里有一个指向文档的链接,其中包含更多信息,可以为多个版本的操作系统构建.我找不到在线链接,因此这是您本地安装的文档的链接. 文件:///Library/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone4_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/DeveloperTools/Conceptual/XcodeProjectManagement/210-Building_Products/building.html#//apple_ref/DOC/UID/TP40002693-SW38

这是一个摘录:

您可以开发可部署的软件,并利用不同版本的iPhone OS或Mac OS X中的功能,包括与您正在开发的版本不同的版本.此功能称为交叉开发.

为了利用交叉开发,您必须为计划定位的操作系统版本安装Mac OS X SDK.然后,在项目中,指定构建产品时使用的SDK.您还可以指定必须运行该软件的最早版本的Mac OS X.

在某些情况下,Apple会为即将推出的操作系统版本分发SDK作为种子,允许您准备应用程序以便在将Mac OS X的未来版本发布给公众之前使用它们.

重要:Xcode中的交叉开发需要本机目标.

要设置Xcode项目以定位多个Mac OS X版本,请执行以下步骤:

 选择一个SDK.在Groups&Files列表中选择您的项目,然后选择File> Get Info.在"项目信息"窗口的"常规"窗格中,从"基本SDK for All Configurations"弹出菜单中选择SDK.当您选择SDK时,Xcode会根据与指定版本的操作系统对应的标题集在您的项目中构建目标,并链接该SDK中的存根库.这允许您在开发计算机上构建可以在SDK所针对的操作系统版本上运行的产品.您的软件可以使用系统版本中可用的功能,包括您选择的功能.

您还可以通过Base SDK(SDKROOT)构建设置指定Base SDK.

 选择部署版本Mac OS X.如果您的软件必须在一系列操作系统版本上运行,请为每个需要一个目标的目标选择Mac OS X部署操作系统.部署操作系统识别软件可以运行的最早系统版本.默认情况下,它设置为与SDK版本对应的OS版本.
要为目标设置部署版本:

  一个.在"组和文件"列表中选择目标,然后打开"信息"窗口.单击"生成"以打开"生成"窗格.

湾 找到部署目标(MACOSX_DEPLOYMENT_TARGET)或iPhone OS部署目标(IPHONEOS_DEPLOYMENT_TARGET)构建设置(取决于您正在开发的平台),并从"值"列的弹出菜单中选择部署操作系统.

对于每个目标,提供考虑所选SDK的前缀文件.要使用SDK中的伞形框架头作为前缀文件,请将相应的#include指令添加到目标的前缀文件中,而不是直接设置伞框架头的前缀头路径.为多个版本的Mac OS成功开发软件还有很多其他功能.有关更多信息,请参阅SDK兼容性指南