【发布时间】:2011-03-01 07:47:17
【问题描述】:
为什么在使用新的 Iphone SDK 安装新版本的 xcode 时会删除旧的 SDK? 现在我们有了 v4,我必须进行哪些设置才能使应用程序仍然可以与 3.x 一起使用?
谢谢
【问题讨论】:
-
似乎“如何修复”已排序。 “为什么”比我们在测试期间想象的要复杂,请授予:stackoverflow.com/questions/3161385。
为什么在使用新的 Iphone SDK 安装新版本的 xcode 时会删除旧的 SDK? 现在我们有了 v4,我必须进行哪些设置才能使应用程序仍然可以与 3.x 一起使用?
谢谢
【问题讨论】:
将 Base SDK 设置为 4.0,将部署目标设置为 3.x。或者,在现代条件下,Base SDK to Latest 和 Deployment Target 可以满足您的任何需求。
【讨论】:
3.2.3 最后一个测试版确实消除了所有其他 SDK 的原因,许多人尝试发布使用测试版 SDK 开发的应用程序,这将不被接受。我猜通用汽车仍然在做同样的事情
如果你想为 4.0,3.2 和 3.0(加上 3.0,3.1,3.1.2,3.1.3)开发 执行以下操作
【讨论】:
如果您有来自 Time Machine 之类的系统备份(而且您更好!),您可以从位于 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs 和 /Developer/Platforms/ 的备份中复制较旧的 SDK iPhoneSimulator.platform/Developer/SDKs - 然后重启 XCode 就可以开始了。
【讨论】:
虽然“Zoul”已经最简洁地回答了这个问题,但我将尝试详细说明这 2 个设置并指出一些有用的文档,这些文档将有助于其他不熟悉这种情况的人。
Base SDK 版本:这表示编译程序所基于的 SDK 版本。这可以从项目或目标的“构建设置”中设置。您可以在该版本之前引入的代码中使用来自 Apple 的 API 代码,编译器将识别所有符号并毫无问题地进行编译。
部署目标:这是你方关于应安装在用户设备上以运行你的代码的最低 iOS 版本的声明。此设置可以在项目的“信息”部分和特定目标的“摘要”部分下找到。现在,需要了解的重要一点是,如果您使用 Apple 在更高版本中引入的 API 代码,您的代码将不会自动在具有旧版本 iOS 的设备上顺利运行。这些可以是 Apple 在以后的版本中引入的新类/方法/框架。您必须通过编写必要的条件代码并提供备用代码路径来确保为没有较新 API 的旧 iOS 版本优雅降级。您可以自行处理版本不兼容问题。
有关该主题的 Apple 文档可在“SDK Compatibility Guide”中找到。
要了解不同 iOS 版本的变化,请参阅“What's new in iOS”。
在“构建和运行应用程序”部分的“iOS Development Guide”中也讨论了这个主题。请参阅“指定运行时环境”小节。
【讨论】:
如果在将部署目标设置为至少与所需的 SDK 一样低后仍然存在问题,则需要下载该 SDK。幸运的是,Xcode 在这方面也为我们提供了帮助:
【讨论】: