12

是否可以使用 Xcode 4 编写支持 iOS 3.x 版本的应用程序?如果是这样,怎么做?Apple 是否有关于应用程序向后兼容性的官方建议?

4

4 回答 4

22

要让您的应用程序在 iOS 3.x 设备上成功运行,请执行以下步骤 (Xcode 4.2):

  1. 单击您的项目名称,选择您的目标并在“构建设置”下

    a) 将“iOS 开发目标”(在“部署”下)设置为 3.0

    乙)。将“armv6”添加到“架构”列表(在“架构”下)。在此处输入图像描述

    c) 将“其他链接器标志”(在“链接”下)设置为“-weak-lSystem”。

  2. 在您的 Info.plist 文件中,从“必需的设备功能”(UIRequiredDeviceCapabilities)中删除“armv7”的值。

  3. 在您的代码中:

    一种)。不要使用userInterfaceIdiom. 如果您需要知道它是什么设备(iPhone 或 iPad),请参阅How do one get UI_USER_INTERFACE_IDIOM() to work with iPhone OS SDK < 3.2

    b) 不要使用 window.rootViewController。而是使用[window addSubview: self.mainViewController.view];将主控制器的视图添加到窗口。

  4. 单击您的项目名称,选择您的目标,然后在“Build Phases”/“Link Binary With Libraries”下将“UIKit.framework”设置为“Optional”。还可以将任何额外的框架设置为可选,这在 iOS 3 中不可用。例如,如果您使用 iAd 或 Twitter 框架,则应将它们设置为可选。使用前检查代码中额外框架的可用性。

  5. 在真机上运行时,针对最新版本的 SDK 编译应用程序。为此,请从“方案”下拉列表中选择第二项(否则您将收到与可选 SDK 相关的编译错误):

在此处输入图像描述

于 2012-01-07T13:19:38.250 回答
4

是的,您可以使用当前的 iOS SDK 开发支持早期 iOS 版本的应用程序。

有关官方建议,请参阅 Apple 的SDK 兼容性指南

于 2011-05-20T16:55:20.087 回答
2

您使用的 Xcode 版本与您的应用可以支持的 iOS 版本无关。要选择您的应用支持的 iOS 版本,只需在项目设置中更改 iOS 部署目标即可。然后确保不要使用晚于该版本的任何 API。

于 2011-05-20T16:53:33.073 回答
1

可以肯定的是,您可以使用 Xcode 4 将 iOS 3.x 作为部署目标,但您将无法在 iOS 3.x SDK 模拟器上模拟您的程序。所以你自己很漂亮(即,如果你使用任何 iOS 4.x 独有的功能,直到你在物理设备上测试你才会发现它)。

您需要旧版本的 Xcode 才能针对旧的模拟 SDK 进行调试。

于 2011-05-20T17:03:18.047 回答