安装带有iPhone SDK 4的Xcode 3.2.3,出现“缺少基本SDK”,无法看到其他SDK。

80

我创建了这个社区维基,将一些我在SO上看到的问题和答案联系在一起。如果你来到这里,你可能已经安装了带有iPhone SDK 4的Xcode 3.2.3的最终版本(下载链接,需要注册),然后遇到了以下一个或多个问题:

  • 在之前工作正常的Xcode iPhone项目中,出现了“Base SDK Missing”的错误提示。类似于这样:

    Ruh-roh!

  • 在相关但更为普遍的观察中,以前可用的各种设备或模拟器SDK选择(例如3.0、3.1、3.1.3等等)在你曾经看到它们的地方都不可用了。

4个回答

165

概述

我将解释为什么会发生这种情况,以及如何解决特定的“Base SDK Missing”问题。你可以直接跳到最后找到解决方法,但我建议你把整篇文章都看完。我还建议阅读约翰•马乔的优秀文章来了解这个问题。

如果您特别关心Xcode 3.2.4升级,那么您可能需要查看这里与之相关的问题。

一种SDK统治它们所有

以下是事实:现在,只有使用4.0版本的SDK才能提交新的或更新的iPhone应用程序。这是直接从苹果的iOS 4可用性检查表(需要注册)中得知的:

所有新应用程序和现有应用程序的更新必须使用iPhone SDK 4构建。请注意,App Store将不再支持面向iOS 2.x的应用程序。

我猜想,仅面向iPad和通用应用程序应该使用3.2 SDK。这就是为什么4.0和3.2是你的唯一SDK选择。

这也是为什么你的项目现在被破坏了,因为它之前映射到的SDK已经过时,消失了。

(但)3是一个魔幻数字

放松。你仍然可以针对运行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功能,请强烈建议你查看此文。

修复“Base SDK Missing”

  1. 加载你的项目
  2. 从菜单中选择“项目”>“编辑项目设置…”
  3. 在架构 > 基本 SDK 下,选择其中一个可用的设备版本。
选项:iPhone 3.2 或 iPhone 4.0。如果只考虑 iPhone,建议选择 4.0。
  • 关闭该窗口。
  • 从菜单中选择“项目”>“编辑活动目标:“YourTarget”
  • 在体系结构 > 基础 SDK 下选择一个可用的设备或模拟器选项:iPhone 3.2 或 iPhone 4.0。
  • 如果要针对早期版本的 iOS 进行开发,则在同一窗口下,在“部署”>“iPhone OS 部署目标”下选择您想支持的最低版本。请注意,通过应用商店支持 2.x 版本已被弃用。请参见上面的“准备清单”。
  • Xcode 4 及以上版本的基础 SDK 位置

    按照上述步骤操作,但对于第二步,请点击以下内容:

    • 使用导航侧边栏左侧的文件夹图标选择“项目导航器”
    • 选择顶部的项目。
    • 项目配置将出现在主编辑面板中;在顶部选择“构建设置”,下面将是“体系结构”部分。

          Project navigator           Build Settings

    (此答案是Sherman Lo答案的略微改编版)

    补充说明

    关于此主题的更详细信息也可以在这个问题的第一个答案中找到。还有一些有用的信息在这里


    3
    对于那些跟我一样眼瞎,认为“Project Settings”项不存在的人,需要注意一下,它其实在“项目”下面的“编辑项目设置”里。请注意,本翻译没有改变原文意思,并尽可能使语言更加通俗易懂,同时未添加解释或其他内容。 - Lou Zell
    1
    你仍然可以从苹果官网下载并安装之前的Xcode版本(例如3.1.4:Leopard,Snow Leopard)。那个链接实际上是用于3.1.3 SDK,而不是3.1.4。 - Remover
    1
    伙计们:这是一个维基,所以请随意自行修正。 - Clay Bridges
    2
    请注意,目标设置会覆盖项目设置;您不必在两个位置都进行设置。我建议您不要在目标设置中设置它(如果存在,请将其删除),然后只在项目设置中进行设置。顺便说一句:如果您确实在项目设置中进行了设置,请确保选择了所有配置。(或者使用“常规”选项卡并通过“所有配置的基本 SDK”弹出窗口设置它)。 - geowar
    1
    你可能想要更新这个答案,以包含最新的SDK。 - Steven Fisher
    显示剩余6条评论

    8
    如果您已经调整了设置,但仍然看到“缺少基础 SDK”且无法构建,请重新载入您的项目。我退出了 Xcode,但关闭并重新打开也可能起作用。

    为什么会这样?因为一个设置的更改就必须关闭Xcode并重新加载似乎很奇怪 :O - RyBolt
    很好的问题RyBolt,但事实就是这样。苹果必须在某个地方缓存了一些东西,重新加载会将其清除,但这只是一个猜测。 - John Stephen

    5
    Clay Bridges提供的下载早期版本Xcode和iPhone OS SDK的链接无法使用。但是,将这些链接中第一个'iphone'替换为'ios'可行,至少对于Snow Leopard链接(正在下载)。
    正确的链接以及有关在新版Xcode安装旧版iOS SDK的信息来自Chris Fletcher的博客文章:howto install iphone sdk 2.0.3.1 for xcode 3.2 强烈推荐!

    好的信息,史蒂夫。我认为我的答案是一个社区维基。你有没有可能用正确的信息编辑它。谢谢。 - Clay Bridges
    我是StackOverflow的新手,我认为在网站允许我编辑他人发布的帖子之前,我需要更多的“积分”。界面没有给我任何明显的方法来编辑您的帖子。抱歉。 - SteveCaine

    3

    我也遇到了相同的问题。当我使用多个目标进行切换时,从一个iOS目标切换到MacOS目标时,Xcode会忘记更改一些内容。

    通过选项/alt点击下拉菜单,可以发现一些非常有用的额外选项。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接