【发布时间】:2011-08-29 19:55:29
【问题描述】:
是否可以使用 Xcode 4 编写支持 iOS 3.x 版本的应用程序?如果是这样,怎么做? Apple 对应用程序的向后兼容性有任何官方建议吗?
【问题讨论】:
标签: xcode ios ios4 xcode4 ios-3.x
是否可以使用 Xcode 4 编写支持 iOS 3.x 版本的应用程序?如果是这样,怎么做? Apple 对应用程序的向后兼容性有任何官方建议吗?
【问题讨论】:
标签: xcode ios ios4 xcode4 ios-3.x
要让您的应用在 iOS 3.x 设备上成功运行,请按照以下步骤操作 (Xcode 4.2):
单击您的项目名称,选择您的目标并在“构建设置”下
a) 将“iOS 开发目标”(在“部署”下)设置为 3.0
b)。将“armv6”添加到“架构”列表(在“架构”下)。
c) 将“其他链接器标志”(在“链接”下)设置为“-weak-lSystem”。
在您的 Info.plist 文件中,从“必需的设备功能”(UIRequiredDeviceCapabilities) 中删除“armv7”的值。
在您的代码中:
一)。不要使用userInterfaceIdiom。如果您需要知道它是什么设备(iPhone 或 iPad),请参阅How does one get UI_USER_INTERFACE_IDIOM() to work with iPhone OS SDK < 3.2。
b) 不要使用 window.rootViewController。而是使用[window addSubview: self.mainViewController.view]; 将主控制器的视图添加到窗口。
单击您的项目名称,选择您的 Target,然后在“Build Phases”/“Link Binary With Libraries”下将“UIKit.framework”设置为“Optional”。也将任何额外的框架设置为可选,这在 iOS 3 中不可用。例如,如果您使用 iAd 或 Twitter 框架,它们应该设置为可选。使用前检查代码中额外框架的可用性。
在真机上运行时,针对最新版本的 SDK 编译应用程序。为此,请从“方案”下拉菜单中选择第二项(否则您将收到与可选 SDK 相关的编译错误):
【讨论】:
self.window.rootViewController = self.viewController; 替换为 [self.window addSubview: self.viewController.view]; 来让我的应用程序正常工作
是的,您可以使用当前的 iOS SDK 开发支持早期 iOS 版本的应用。
有关官方建议,请参阅 Apple 的 SDK Compatibility Guide。
【讨论】:
您使用的 Xcode 版本与您的应用可以支持的 iOS 版本无关。要选择您的应用支持的 iOS 版本,只需在项目设置中更改 iOS 部署目标即可。那么请确保不要使用晚于该版本的任何 API。
【讨论】:
可以肯定的是,您可以使用 Xcode 4 将 iOS 3.x 作为部署目标,但您将无法在 iOS 3.x SDK 模拟器上模拟您的程序。所以你自己很漂亮(即,如果你使用任何 iOS 4.x 独有的功能,直到你在物理设备上测试你才会发现它)。
您需要旧版本的 Xcode 才能针对旧的模拟 SDK 进行调试。
【讨论】: