【问题标题】:iOS Development: How can I run my iPhone 4.2 app on the iPhone 3.2 simulator?iOS 开发:如何在 iPhone 3.2 模拟器上运行我的 iPhone 4.2 应用程序?
【发布时间】:2011-06-01 11:55:07
【问题描述】:

我正在深入研究 iOS 开发,并且正在构建一个支持 iOS 3.2 到 4.2 版本的简单应用程序。我已经在 4.2 模拟器上的最新版 Xcode 中很好地测试了它,但我也想模拟它在 iOS 3.2 设备上运行。在阅读了一些关于这方面的教程后,我设法下载并安装了旧版本的 xcode 以及旧的 3.2 SDK,但是当我在旧版本的 Xcode 中构建我的项目时,由于围绕所有 iOS 4.2,我遇到了大量错误旧版本的 Xcode 不支持的功能。我正在弱链接所有 4.2 框架,但我仍然遇到错误。如何让我的 4.2 应用程序在这个旧版本的 Xcode 中成功构建并让它在 3.2 iPhone 模拟器中运行?

非常感谢您的智慧!

【问题讨论】:

    标签: iphone xcode ipad ios


    【解决方案1】:

    您是否选择了将基本 SDK 设置为 3.0 或其他版本的选项?因为这样做您也可以在旧操作系统上运行 iOS 4.2 中可用的新 API。

    干杯

    【讨论】:

    • 谢谢,阿迪亚。我在任何地方都看不到“3.0 或其他”设置。 “3.0”是我的壁橱设置。
    • 您可以在 Project Setting->Build->Base SDK 部分看到。
    【解决方案2】:

    您需要在任何引用仅存在于 4.2 上的功能的行周围添加#ifdef __IPHONE_4_2...#endif。这样,3.2 编译器将构建您的应用程序,就好像这些行不存在一样。

    您需要非常小心地构建这些语句,以便它们完全反映在 3.2 上运行 built-for-4.2 构建时将被禁用的代码位,否则没有什么意义。

    这将在不包含任何 4.2 功能的情况下构建您的应用,因此它实际上并没有测试您的弱链接等是否正确,它只是测试后备 3.2 代码的工作方式。

    它可能会抛出一些关于您不知道在 3.2 中不存在的功能/方法的警告。确保这些都添加了适当的后备代码。

    (顺便说一句,众所周知,Apple 拒绝使用 Base SDK 为 3.2 的 iPhone 应用程序。如果您在 4.0 之前返回,则至少需要支持 3.1.3)

    【讨论】:

    • 哇,真的吗?我必须手动模拟代码的结构?这太可怕了,我不是在搞砸。总之,谢谢!
    【解决方案3】:

    我认为正确的做法如下: 1.如果您正在为 4.2 版开发,那么您必须安装 Xcode 4.2 版。 2.在设备 4.0 和 3.2 操作系统上构建应用程序时,选择基础 SDK 到 4.2,并将目标设备部署到您想要支持的最低版本,例如 3.2。这将使您的代码与较低版本兼容,并且您的应用程序将在较低版本上加载。

    此外,为了支持较低版本的新 API,您可以点击以下链接: http://www.marco.org/1648550153

    希望对你有帮助

    【讨论】:

    • 谢谢,Snehal,但我认为你没有理解我的问题。我了解如何配置 xcode 项目以支持多个版本的操作系统,这部分非常简单。我卡住的地方实际上是让我的应用程序在旧版本的模拟器上运行。据我了解,我需要下载具有 3.2 模拟器的旧版 Xcode,但当我尝试构建我的代码以便它可以在 3.2 模拟器上运行时,我得到了大量的编译错误,因为3.2 SDK 看不懂 4.2 代码。所以这是我的问题,也是我目前所处的位置。
    • 编译器是否会给出类似...这种方法的错误,操作系统版本 4.0 不支持此方法。您是否按照上面的链接进行操作?
    【解决方案4】:

    您可以在最新的 Xcode 中同时运行 3.2 和 4.x 模拟器(当然不能同时运行!)。您必须将“Base SDK”设置为 4.2,将“iOS 部署目标”设置为 3.2。现在您可以从项目窗口左上角的“Overview”弹出菜单中选择 3.2 Simulator(或更高版本)。您也可以通过“硬件->版本”菜单项在 iOS 模拟器应用程序本身中选择模拟器版本。

    【讨论】:

      【解决方案5】:

      关于第二个问题,在 iOS 模拟器中实际在 3.2 版本的 iPhone 上运行它:我一直在努力解决这个问题——Xcode 4.0.2,将我的部署目标设置为 iOS 3.2,将我的项目设置为 iPhone只是,但是当我尝试在 3.2 版本下的 iOS 模拟器中运行时,模拟器会变形为 iPad 模拟器,即使在我选择版本号之前它一直作为 iPhone 模拟器运行。

      这让我很沮丧。但我读了这篇文章,这很有意义:

      http://en.wikipedia.org/wiki/IOS_version_history

      iPhone 从未运行过 3.2;那是一个仅限 iPad 的版本。因此,即使 iOS 模拟器中的 Hardware > Version 菜单列出了 3.2 (7W367A),推测该设置仅旨在与 Hardware > Device > iPad 兼容。当模拟器将我切换到 iPad 模拟器时,它正在执行此规则。这完全有道理。

      所以我需要一个 3.1.3 或更旧的模拟器来运行我的应用程序,就像在 3.x 代 iPhone 上运行一样。这在我的 Xcode 4 构建中不可用,所以我现在对此无能为力,除了将旧的 Xcode 构建放在我的机器上之外,这对我来说很有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 2011-02-15
        • 2012-03-26
        相关资源
        最近更新 更多