25

我知道这个问题的一部分被问到了几个不同的地方,但我想确保我做对了。

这是我的假设和理解,我想在提交之前知道它们是否正确。

我的应用程序假定所有操作系统都支持的功能,所以我应该:

  1. 将 Active SDK 设置为最新版本(当前为 SDK 3.0)。
  2. 将部署目标设置为我希望支持的较低版本 - iPhone 2.0 或更高版本?
  3. Base SDK 到底是做什么用的?如果我选择了不同的 Active SDK,我应该忽略它吗?我在项目设置中的哪里可以看到 Active SDK?

最后一个问题——苹果是否允许选择 iPhone OS 2.0 作为部署目标?

提前致谢,

顺便说一句 - 我提出这个问题的主要原因之一是因为当使用早期的 SDK 编译时,当此动画被保存以供多次使用时,苹果似乎在释放 UIImageView 动画数组的内存时出现问题。这是一个在 SDK 3.0 中修复的已知问题(只需将 UIImageView 动画数组设置为 nil)

4

4 回答 4

28

Base SDK 和 Active SDK 之间的区别在于前者是为项目设置的默认 SDK,而后者是您当前构建的 SDK。因此,您的 Active SDK 有可能成为 Base SDK,此时 XCode 将使用您为项目指定的 SDK。

为了为尽可能多的设备构建您的应用程序,您是正确的:

  • 将 Base SDK 设置为可能的最新 SDK(3.0、3.0.1)
  • 将部署目标设置为最早的 SDK (2.0)

Apple 确实允许您将 iPhone 2.0 指定为部署目标,但请记住,在 iPhone 2.0 之后发布的任何 API 或框架默认情况下您将无法使用。有一些技术可以使用后来的 SDK 中的功能,但它们并不重要。

于 2009-08-31T16:54:44.280 回答
8

您应该将 Base SDK 构建设置设置为包含您打算使用的所有功能的最新 SDK(通常是最新的可用 SDK),并将“iPhone 部署目标”构建设置设置为操作系统的最早版本你想运行的。

然后,您需要确保在运行时检查早期操作系统上可能不存在的任何功能。

于 2010-02-15T17:51:31.857 回答
3

“Base SDK”是您的应用程序可以支持的最大 SDK。这里有一个硬性限制 - 您不能选择未来未发布的 SDK。

“部署目标”是您愿意支持的最低 SDK。你愿意回到多远的时间。

Xcode 似乎创建了对“部署目标”的虚假依赖。例如,我无法使用 Xcode 4.5.2(Xcode 4.5.2 与 iOS 6.0 配对)在我的 iOS 5.1.1 iPod 上进行开发,即使在此安装中安装了 4.3、5.0 和 5.1 API 和模拟器。我需要在我的 iOS 6.0 iPhone 中使用模拟器或插孔。

苹果正在玩的游戏似乎也给应用程序带来了问题。我购买的 Elements 副本不会通过 iTunes 同步到 iPod,因为 Elements 需要更新版本的 iOS 才能运行(它可以在我的 iOS 6.0 iPhone 上同步并正常运行)。

我有两台 iPad,一台是 4.3。我不禁想到它会造成多大的混乱。

于 2012-11-15T10:07:00.303 回答
1

一般来说;

将 BASE SDK 设置为您愿意支持和测试的最新 SDK。

将部署目标设置为您愿意支持和测试的最低 iOS 版本。

如果您碰巧使用了部署目标 SDK 上不可用的 Base SDK 功能,应用程序将在旧设备上运行时崩溃,因此测试至关重要。

另一种/补充过程是使用 Deploymate http://www.deploymateapp.com/进行静态代码分析以识别问题。

如果您来自 android 世界,那么类比就是这样;

TargetSDK -> 基础 SDK

MinSDK -> 部署目标

皮棉-> 部署伙伴

于 2013-11-29T04:02:55.883 回答