是否可以使用 Xcode 4 编写支持 iOS 3.x 版本的应用程序?如果是这样,怎么做?Apple 是否有关于应用程序向后兼容性的官方建议?
4 回答
要让您的应用程序在 iOS 3.x 设备上成功运行,请执行以下步骤 (Xcode 4.2):
单击您的项目名称,选择您的目标并在“构建设置”下
a) 将“iOS 开发目标”(在“部署”下)设置为 3.0
乙)。将“armv6”添加到“架构”列表(在“架构”下)。
c) 将“其他链接器标志”(在“链接”下)设置为“-weak-lSystem”。
在您的 Info.plist 文件中,从“必需的设备功能”(UIRequiredDeviceCapabilities)中删除“armv7”的值。
在您的代码中:
一种)。不要使用
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];
将主控制器的视图添加到窗口。单击您的项目名称,选择您的目标,然后在“Build Phases”/“Link Binary With Libraries”下将“UIKit.framework”设置为“Optional”。还可以将任何额外的框架设置为可选,这在 iOS 3 中不可用。例如,如果您使用 iAd 或 Twitter 框架,则应将它们设置为可选。使用前检查代码中额外框架的可用性。
在真机上运行时,针对最新版本的 SDK 编译应用程序。为此,请从“方案”下拉列表中选择第二项(否则您将收到与可选 SDK 相关的编译错误):
是的,您可以使用当前的 iOS SDK 开发支持早期 iOS 版本的应用程序。
有关官方建议,请参阅 Apple 的SDK 兼容性指南。
您使用的 Xcode 版本与您的应用可以支持的 iOS 版本无关。要选择您的应用支持的 iOS 版本,只需在项目设置中更改 iOS 部署目标即可。然后确保不要使用晚于该版本的任何 API。
可以肯定的是,您可以使用 Xcode 4 将 iOS 3.x 作为部署目标,但您将无法在 iOS 3.x SDK 模拟器上模拟您的程序。所以你自己很漂亮(即,如果你使用任何 iOS 4.x 独有的功能,直到你在物理设备上测试你才会发现它)。
您需要旧版本的 Xcode 才能针对旧的模拟 SDK 进行调试。