我创建了这个社区维基,将一些我在SO上看到的问题和答案联系在一起。如果你来到这里,你可能已经安装了带有iPhone SDK 4的Xcode 3.2.3的最终版本(下载链接,需要注册),然后遇到了以下一个或多个问题:
在之前工作正常的Xcode iPhone项目中,出现了“Base SDK Missing”的错误提示。类似于这样:
在相关但更为普遍的观察中,以前可用的各种设备或模拟器SDK选择(例如3.0、3.1、3.1.3等等)在你曾经看到它们的地方都不可用了。
我创建了这个社区维基,将一些我在SO上看到的问题和答案联系在一起。如果你来到这里,你可能已经安装了带有iPhone SDK 4的Xcode 3.2.3的最终版本(下载链接,需要注册),然后遇到了以下一个或多个问题:
在之前工作正常的Xcode iPhone项目中,出现了“Base SDK Missing”的错误提示。类似于这样:
在相关但更为普遍的观察中,以前可用的各种设备或模拟器SDK选择(例如3.0、3.1、3.1.3等等)在你曾经看到它们的地方都不可用了。
我将解释为什么会发生这种情况,以及如何解决特定的“Base SDK Missing”问题。你可以直接跳到最后找到解决方法,但我建议你把整篇文章都看完。我还建议阅读约翰•马乔的优秀文章来了解这个问题。
如果您特别关心Xcode 3.2.4升级,那么您可能需要查看这里与之相关的问题。
以下是事实:现在,只有使用4.0版本的SDK才能提交新的或更新的iPhone应用程序。这是直接从苹果的iOS 4可用性检查表(需要注册)中得知的:
所有新应用程序和现有应用程序的更新必须使用iPhone SDK 4构建。请注意,App Store将不再支持面向iOS 2.x的应用程序。
我猜想,仅面向iPad和通用应用程序应该使用3.2 SDK。这就是为什么4.0和3.2是你的唯一SDK选择。
这也是为什么你的项目现在被破坏了,因为它之前映射到的SDK已经过时,消失了。
放松。你仍然可以针对运行iPhone OS 3.0(但不包括更低版本)的设备进行定位。你使用的SDK 编译 不会限制--向下-- iOS版本。
你可以编写或支持。在你的项目中解决问题后(参见下一节),你可以将“iPhone OS Deployment Target”设置为较低的iOS版本。想要快速了解如何操作,请参阅下一节的第7步。请注意,你现在进入了一些棘手的领域。你通常使用的Xcode 3.2.3编译器将不再强制执行你对3.0-only调用的兼容性,并且也没有这些的模拟器。如果你想要支持4.0功能,你需要进行一些条件代码以防止在3.0设备上崩溃。很有趣。
你仍然可以下载(来自苹果!)和安装以前的Xcode版本或SDK(参见此处)。是的,你可以在不同的目录中安装多个Xcode版本,例如只将一个版本放在/Developer中。你可以使用旧版Xcode测试你的应用程序与3.x SDK的兼容性,将艰难的工作交给高级编译器和模拟器。但是你不能再使用以前的SDK产品提交到应用商店了。
顺便说一句,在我发布之前,我打算做这个检查。
Matt Gallagher在"Cocoa with Love"上发布了一篇关于版本条件代码的文章,名为"Tips & Tricks for conditional iOS3, iOS3.2 and iOS4 code"。如果你计划有条件地使用4.0功能,请强烈建议你查看此文。
按照上述步骤操作,但对于第二步,请点击以下内容:
(此答案是Sherman Lo的答案的略微改编版)
我也遇到了相同的问题。当我使用多个目标进行切换时,从一个iOS目标切换到MacOS目标时,Xcode会忘记更改一些内容。
通过选项/alt点击下拉菜单,可以发现一些非常有用的额外选项。