在Lion中向Xcode 4.1添加旧版本的iOS SDK

20

我刚刚安装了Lion和Xcode 4.1。我该怎么添加旧的SDK,以便在iPhone / iPad模拟器中构建和运行4.1或4.2?Xcode 4.1仅附带iOS 4.3 SDK。

Lion对于构建是否有某种最低SDK要求?

谢谢,

8个回答

27
实际上,只要你能获得旧版本的Xcode和相应的SDK,就可以添加旧版本的SDK。有时这很有用:这样做可以在编译时发现未被支持的常量和方法,而不是在运行时。以下是如何操作:
  1. 获取带有旧SDK的旧版本Xcode。Apple iOS开发中心目前列出了带有Xcode 3.2.6下载的4.3 SDK。
  2. 通过终端挂载DMG并打开其中隐藏的Packages文件夹:
  3. open /Volumes/Xcode\ and\ iOS\ SDK/Packages/

  4. 双击所需SDK版本的pkg文件。我正在寻找iPhoneSDK4_3.pkg,但除了4.3之外,还发现了尽至iPhoneSDK3_0.pkg的老版本包。因此,如果您知道在哪里找到它们(我不知道),则可能仍会在App Store下载时打包旧版SDK。
  5. 让其安装在自己选择的文件夹中,因为无法强制其安装在Applications / Xcode.app / Contents / Developer中(这是Developer文件夹现在的位置)
  6. 您将在所选卷的Platforms文件夹中找到该包已安装。将相关SDK移动到Xcode.app中的Developer文件夹中。您可能需要使用sudo:
  7. sudo mv /Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

  8. 重新启动Xcode,然后您应该在Base SDK选项中看到新(旧)的SDK。耶!

截至2013年9月12日更新

如果你尝试添加的“旧版SDK”捆绑在Xcode 4.3或更高版本中,只需从开发中心链接下载Xcode并将相关文件复制过去即可添加SDK(当前指向这里)。

在终端中,您可以执行以下操作(编辑适当的SDK版本号):

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

对于 Xcode 版本在 4.3 之前的 SDK,旧的步骤仍然是相关的。

我发现这种方法适用于让 Xcode 5 GM 编译构建并携带旧版 iOS 6 UI 的应用,即使在部署到 iOS 7 设备上时也是如此。如果需要修复等待 UI 重新设计的 bug,则此方法很有用。话虽如此,肯定有更简单的方法来在 iOS 7 设备上获取 iOS 6 UI。


好的,我在Lion 10.7.4上尝试了这个方法,使用xcode 4.3.3安装iPhone5.0.sdk,但是xcode似乎无法识别它。我已经运行了IOS 5模拟器,并且可以将BaseSDK设置为5.0,但我的iPad却有5.0.1版本,没有任何东西被传输到那里。在Snow Leopard上没有问题。两个系统上都有所有证书,这很奇怪... - RedRoosterMobile
你的 Xcode 是否出现任何错误/警告?你的 iOS 部署目标版本是否设置正确?同时确保 armv7 被设置为有效的架构。 - nioq
这甚至适用于旧版本的OS X SDK。例如,我能够将旧构建机上的/Developer/SDKs/MacOSX10.5.sdk复制到新机器上的/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.5.sdk。 - David Foster
我使用这种技术,在Mountain Lion上通过运行旧的XCode 4.4.1并使用这些技术从XCode 4.1复制SDK来使旧的SDK编译为ARMv6代码。 - scotru

8

如上面的答案所示,只要您有捆绑它的旧版xcode的副本[或者您只需拥有旧版sdk的副本并将其复制到正确的位置],就可以添加其他SDK。 - binary_falcon

8
打开Xcode并打开首选项(Xcode -> 首选项菜单)。点击下载图标,查看组件选项卡。所有版本从3.0到5.1都应该可用。只需为您想要使用的版本点击安装即可。

6

对于我来说,这些解决方案都不能在Mac OS 10.8和XCode 4.5上工作。但是现在,在应用程序文件夹中安装这些文件,管理起来更加容易。

选项#1:在安装新版本之前,将旧版本的XCode重命名,保留备份很容易。然后,您可以在新版本上使用“Product->Perform Action->Run Without Building”来测试较新的设备或模拟器。

选项#2:如果您真的想在较新的XCode中使用旧的SDK构建,则可以使用Finder复制SDK。为了使此方法可行,您需要在应用程序文件夹中安装旧版本的XCode。在以下示例中,我只是将XCode 4.4重命名为XCode_old,然后再安装XCode 4.5。注意:您可以右键单击.app文件并选择“显示内容”以获取这些文件,或者只需从终端窗口使用cp。

from: /Applications/Xcode_old.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
to:   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

然后,在“构建设置”中,iOS 5.1 将显示为 Bask SDK。你也可以对模拟器进行同样的操作:

from: /Applications/Xcode_old.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk
to:   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

1

你不能这样做,但是如果你连接的设备运行着旧版本的iOS(这也是你应该进行适当测试的版本),那么它将能够正常构建。


1

在 Lion 上不支持比它更旧的任何东西。我也是一样。我升级到 Lion,现在无法运行任何旧模拟器。很糟糕。 - Nate
嗯,我不确定。我从雪豹中找到了3.2.5版本,但是如果它可以运行,我想它应该是兼容的。如果无法安装,则可能是有意限制。 - Aram Kocharyan
好的,我非常确定。在最初的几周中,苹果在链接到“寻找XCode 3?”的页面上明确声明说它不支持Lion。如果你不熟悉苹果的工作方式,他们会经常这样做,以确保你始终需要升级到他们最新的东西(硬件和软件)。 - Nate

0

0
我在使用Snow Leopard和SDK 4.3的Xcode 4.02中遇到了类似的问题。我想在iPhone 3G上进行测试,但该设备的最新版本(也是正确的版本)是iOS4.2。为了在Scheme中“看到”并在该设备上运行,我必须像上面描述的那样更改iOS部署目标的构建设置。(顺便说一句,您还必须关闭iPhone上的限制,以便让Xcode安装应用程序 :))

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