我正在深入研究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模拟器中运行?
非常感谢你的智慧!
答案 0 :(得分:1)
您是否选择了将基本SDK设置为3.0或其他的选项?因为这样做可以在较旧的操作系统上运行iOS 4.2中提供的新API。
干杯
答案 1 :(得分:1)
您需要在引用仅存在于4.2上的功能的任何行周围添加#ifdef __IPHONE_4_2
... #endif
。这样,3.2编译器将构建您的应用程序,就好像这些行不存在一样。
你需要非常小心地构造这些语句,使它们完全镜像在3.2上运行build-for-4.2构建时将被禁用的代码位,否则就没有太多意义了。 / p>
这将构建您的应用程序,而不包含任何4.2功能,因此它实际上并不测试您的弱链接等是否正确,它只是测试回退3.2代码的工作原理。
它可能会引发一些关于3.2中不存在的功能/方法的警告。确保这些代码添加了适当的后备代码。
(顺便说一下,苹果公司已经拒绝使用基本SDK 3.2的 iPhone 应用程序。如果你在4.0之前回来,你需要支持至少3.1.3)
答案 2 :(得分:1)
关于第二个问题,实际上是在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模拟器中的版本菜单列出3.2(7W367A),可能该设置仅与硬件兼容>装置> iPad兼容。模拟器在将我切换到iPad模拟器时强制执行此规则。这很有道理。
所以我需要一个3.1.3模拟器,或更老的,来运行我的应用程序,就好像在3.x代iPhone上运行一样。这在我的Xcode 4版本中不可用,所以现在对我来说我只是无法做任何事情,而不是在我的机器上放置旧的Xcode版本。
答案 3 :(得分:0)
我认为正确的做法如下: 1.如果您正在为4.2版开发,那么您必须安装Xcode版本4.2。 2.在设备4.0和3.2操作系统上构建应用程序时,选择基本SDK到4.2,并将目标设备部署到您要支持的最低版本,例如3.2。这将使您的代码与较低版本兼容,并且您的应用程序将加载到较低版本。
另外,为了支持较低版本的新API,您可以点击以下链接: http://www.marco.org/1648550153
我希望这有助于你
答案 4 :(得分:0)
您可以在最新的Xcode中运行3.2和4.x模拟器(当然不是在同一时间!)。您必须将“Base SDK”设置为4.2,将“iOS Deployment Target”设置为3.2。现在,您可以从项目窗口左上角的“概述”弹出菜单中选择3.2模拟器(或更高版本)。您也可以通过“硬件 - >版本”菜单项在iOS模拟器应用程序中选择模拟器版本。