我知道这个问题的部分内容有多种不同的形式,但我想确保我的答案是正确的。

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

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

  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)

有帮助吗?

解决方案

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

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

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

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

其他提示

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

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

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

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

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

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

我有两台 iPad,一台是 4.3。一想到这会造成多么混乱,我就不寒而栗。

一般来说;

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

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

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

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

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

目标SDK -> 基础SDK

MinSDK -> 部署目标

Lint -> 部署伙伴

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top