2014-10-01 47 views
1

与许多人一样,我需要使用旧版iOS SDK构建应用程序。旧版iOS模拟器是否与iOS SDK相同?

当我通过Xcode的喜好下载iOS模拟器的旧版本,这是一样的下载SDK的先前版本?

举个例子,如果我今天6(iOS版8刚刚发布)下载的XCode,我得到了iOS 8 SDK和模拟器。如果我需要编译适用于iOS 7的应用程序并使用XCode偏好设置中的下载功能来获取iOS 7.0模拟器,那么iOS 7.0 SDK中是否包含这些功能?

在我的脑海中,iOS 7.0模拟器是一款应用程序。 iOS 7 SDK是否附带它,以便您可以构建适用于iOS 7兼容性的应用程序?

+1

你是什么意思“拉一个SDK的早期版本”? – rmaddy 2014-10-01 16:00:54

+0

为上述问题添加了示例。 – rynmrtn 2014-10-01 16:55:32

回答

1

我想我明白你问什么,答案是否定的:iOS的模拟器被命名为他们模拟硬件和iOS的版本,它们运行;例如iPhone 5s(7.1)

Xcode 6仅附带iOS 8 SDK。这就是“Base SDK”(SDKROOT)。您可以将其视为“最佳编译目标”或“最佳支持版本” - 这是您编译的SDK版本。 “部署目标”(IPHONEOS_DEPLOYMENT_TARGET)定义您支持的iOS支持版本的最低。随着您的应用程序的成熟以及两者之间的距离的扩大,您需要对受支持的功能进行更多,更多的运行时检测,或者处理API差异,例如,较新的平台首选较新的调用,而较旧的平台则不存在。

针对(基地SDK)7.1编译的应用程序将在iOS 8.0设备上运行。您可以将其视为“iOS 7模式”。一个更好的例子是从iOS6移动到7 - iOS6.1上编译的应用程序“基础SDK”在iOS7设备上运行,但它们看起来像旧的UI风格。当他们被编译对iOS7.x“基础SDK”,他们看起来适合iOS6或7.

我有一个应用程序,我支持作为“基本SDK”7.1此刻,我设法复制旧的7.1 SDK并针对它进行编译。老实说,它比它的价值更麻烦,恕我直言。如果你仍然有Xcode 5,并且目前只需要7.1,那么你可能只是想使用它。鉴于iOS 8.0已经发布,并且如果您的应用程序是新的,那么您可能根本不需要担心这一点 - 您可能只想确保您支持iOS 7.x,这就是AOK。

鉴于(对于例如)具有7.0部署目标和8.0碱SDK应用程序,任何兼容性问题是你来处理。有些方法可能会有不同的表现(尽管Apple努力维护API兼容性),其他方法将被弃用或者不同。文档在阐明差异和弃用方面做得很好。

+0

所以,如果我正在阅读这个权利 - iOS 7 SDK不需要将部署目标设置为iOS 7.x? – rynmrtn 2014-10-01 17:40:34

+0

@rynmrtn 100%正确。 – greymouser 2014-10-01 17:51:24

1

不,下载模拟器不会添加任何新的SDK。没有必要。使用Xcode 6,您的应用程序应该具有iOS 8的基本SDK。您可以将部署目标设置为早于4.3(尽管进一步超过7.0现在毫无意义)。这样你的应用程序就可以同时支持iOS 8和iOS 7.不需要iOS 7 SDK。

1

什么是你需要旧的SDK?较新的SDK包含标记,允许您使用较旧的部署目标针对较新的SDK进行构建。需要非常小心,以确保您实际上不需要较旧的SDK,因此如果遇到阻止您使用较新的SDK的问题,请确保您提供的雷达位于http://bugreport.apple.com

如果您需要编译将在iOS 7上运行的应用程序,您应该设置7.0(或7)的部署目标。1取决于你的意图是什么),并只使用iOS 8.0 SDK。

-

的iPhone模拟器的SDK双既是是对建立在SDK和模拟器的应用与运行的运行(几乎是一个完全独立的操作系统)。 iOS Simulator.app是一个小型应用程序,基本上启动模拟设备(通过CoreSimulator.framework)并处理I/O。