【问题标题】:iOS 3.x support in Xcode 4Xcode 4 中的 iOS 3.x 支持
【发布时间】:2011-08-29 19:55:29
【问题描述】:

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

【问题讨论】:

    标签: xcode ios ios4 xcode4 ios-3.x


    【解决方案1】:

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

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

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

      b)。将“armv6”添加到“架构”列表(在“架构”下)。

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

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

    3. 在您的代码中:

      一)。不要使用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]; 将主控制器的视图添加到窗口。

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

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

    【讨论】:

    • 谢谢!我将 XCode 4.2 与 iOS SDK5 一起使用,对于步骤 3B,我通过在 AppDelegate.m 中将 self.window.rootViewController = self.viewController; 替换为 [self.window addSubview: self.viewController.view]; 来让我的应用程序正常工作
    • @MikeKeskinov 我在 Xcode 4.2.1 for Lion 中按照上述步骤操作,它可以工作。如果我在 Xcode 4.3 中打开同一个项目,我会遇到与以前相同的错误:当应用程序尝试加载 MainWindow nib 时抛出异常:“-[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x4e, 0x49 , 0x42, 0x41, 0x72, 0x63, 0x68, 0x69)'"。有什么建议?我现在被困住了,所以所有的想法都值得赞赏。
    • 使用:[self.viewController.view setFrame:[[UIScreen mainScreen] applicationFrame]];在 AppDelegate.m 中,解决底部的黑色间隙
    【解决方案2】:

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

    有关官方建议,请参阅 Apple 的 SDK Compatibility Guide

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 另外:有趣的是,Apple 不再接受部署目标早于 3.1 的应用程序;很可能他们现在已经需要 4.0,但考虑到 iPad 很长一段时间没有升级到 iOS 4,他们希望允许开发人员在通用应用程序中支持 iPad 的 iOS 3.2。如果这对问题的“......苹果有任何官方建议”部分有帮助的话。
      • Apple 支持开发目标为 3.0 及以上的应用程序(请参阅here)。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多