Xcode 目标小型OS X构建

Xcode 目标小型OS X构建,xcode,macos,Xcode,Macos,Xcode 7.2支持以OS X 10.11.2为目标,但是SDK仅标记为10.11(根据SDKSettings.plist、settings等)。我需要特别将10.11.2作为我的min版本,因为一些关键的错误修复,但我收到大量警告,它比活动SDK 10.11更高。一切正常,我只是不想看到200多个链接器警告,我不确定这是否会成为Mac应用商店的问题 有人知道苹果为什么不在其OS X SDK上标注版本号,而这是在小版本之间发生变化的事情,并且是否有一种简单的方法来消除警告?SDK/部署目标系统

Xcode 7.2支持以OS X 10.11.2为目标,但是SDK仅标记为10.11(根据SDKSettings.plist、settings等)。我需要特别将10.11.2作为我的min版本,因为一些关键的错误修复,但我收到大量警告,它比活动SDK 10.11更高。一切正常,我只是不想看到200多个链接器警告,我不确定这是否会成为Mac应用商店的问题


有人知道苹果为什么不在其OS X SDK上标注版本号,而这是在小版本之间发生变化的事情,并且是否有一种简单的方法来消除警告?

SDK/部署目标系统在SDK版本方面工作。SDK版本在10.11.0和10.11.2之间没有变化。只有当SDK中的API发生更改时,SDK版本才会更改,而不是当这些API的底层行为发生更改时。因此,您不能使用SDK版本控制将您的应用程序定位到次要/错误修复版本


当然可以在运行时检查OS X版本,并在非当前10.11.X版本上运行时警告用户。

我找到了一个可以接受的解决方案:在我的info.plist中使用LSMinimumSystemVersion指定10.11.2,并将部署目标设置保留在10.11。这会导致我的应用程序在运行时被阻塞,并显示一条足够友好的消息,并消除所有生成警告

我还不知道它将如何在应用商店上运行,你是否能够在10.11.0或.1上安装它,但最坏的情况是,这是一个短期问题


感谢您的帮助。

原因是sdk主要版本根本不关心功能,而是关心二进制兼容性(ABI的外观,如果它支持弱属性,obj-c运行时是什么),以及支持哪些XIB功能,等等

由于Objective-C有一个非常动态的运行时,如果您需要一个类,那么您应该查看是否从
NSClassFromString()
获得一个类。。。如果需要查看对象是否支持方法,则应使用
-(BOOL)respondsToSelector:(SEL)
进行测试

如果你只是不想运行,那么有
info.plist
键。。。但您也不应该使用部署版本来阻止代码在太旧的操作系统上运行,首先检查info.plist值,让启动应用程序(通常是finder或启动服务)有机会传递正确格式的错误,而不仅仅是崩溃


当然,用户可以更改该值。。。因此,您还可以在应用程序的早期代码路径中检查主/次版本…

我的位置与OP类似。就我的应用程序而言,苹果在10.11.2中引入了一个小但重要的更改。El Cap的这个版本附带了我的应用程序所依赖的更新版本的libnetsnmp,它将其中一个数据类型定义从uint32_t更改为u_long

我还没有在Mac App Store中对此进行测试,但我似乎可以将项目中的OSX部署目标更改为10.11.2,但将目标的部署信息设置为默认的10.11。当我编译以这种方式配置的应用程序时,不会再收到链接器警告


请注意-我还没有对Mac应用商店进行测试

您如何设定最低目标?您想使用“.2”的哪些功能?还有,您收到的链接器错误消息是什么?我们在10.11.2中修复的VPN API中有一些错误。错误包括“对象文件…是为比链接(10.11)更新的OSX版本(10.11.2)构建的”和“OS X部署目标'10.11.2'比目标foo中的SDK'OS X 10.11'更新”。我应该说“在警告中”不是错误。谢谢-运行时检查可能是我需要做的。不过,我希望利用一种可以阻止安装的方法。有趣的是,iOS SDK版本使用Xcode(7.0/9.0、7.1/9.1、7.2/9.2)进行跟踪,而OS X SDK没有。根据Apple()的说法,10.11.2中有一些小的API更改,尽管它们只是新的常量值,在标题中显示为u MAC_10_11。
LSMinimumSystemVersion
是否阻止版本较低的用户从MAC应用商店安装它?