如何将旧版本的iOS SDK复制到新版本的Xcode?

4

我有一个新版本的Xcode。我的iOS设备上安装了一个新版本的iOS。

我想使用旧的iOS SDK,使用新版本的Xcode构建我的应用程序。

如何实现?


1
你为什么认为这是必需的? - rmaddy
@AaronBrager 我发表这个声明是因为我已经按照我所说的做了。运行Xcode 5,连接你的iOS 7设备。将一些简单的测试应用程序构建并运行到设备上。一旦所有工作都完成,关闭Xcode 5并运行Xcode 4.6。现在,Xcode 4.6应该可以很好地识别你的iOS 7设备。 - rmaddy
不要这样做。苹果不会使用旧的SDK修复您复制的任何Xcode错误。因此,无法保证您的构建是正确或可靠的。您将花费数小时追踪由SDK不兼容性引起的“幽灵”错误。使用这种方式生成构建并将其提供给客户是不负责任的。 - uliwitness
请参见https://dev59.com/ImMl5IYBdhLWcg3wa2bV#18424373。 - Rob Napier
@RobNapier 这个问题的回答获得了37个赞,而我在这里几乎相同的回答却因为Chris Hanson的“回答”而被踩和删除,他建议不要这样做。 - Aaron Brager
显示剩余6条评论
3个回答

27

你不需要这样做;Xcode.app捆绑包的内容不应被修改。

每个特定版本的Xcode都包含了其经过验证的SDK,使用其他任何SDK都是不受支持的。


3
不支持的意思是它可能随时会出现故障,可能会导致Xcode表现异常,并且通过针对该SDK进行编译生成的代码不能被依赖,因为在限定相关Xcode版本所包含的编译器时,SDK中的头文件未必被使用。 - Chris Hanson
2
你应该把Chris在这个问题上的回答视为权威。他知道自己在说什么。 - NSResponder
1
我不确定我对OP或@ChrisHanson有多少同情心。用户选择编译器不应该与特定的SDK集合绑定在一起。苹果不会“认证”英特尔的编译器,对吧? - al45tair
1
顺便说一下,我已经打开了Radar 15048179(检测不正确的SDK使用)来解决原始问题的一个关键要求。当前苹果的建议是使用部署目标,这非常危险。如果您使用较新的功能,则不会收到警告;只有在旧操作系统上运行该代码时才会崩溃。像Deploymate这样的第三方工具试图解决这个Xcode限制,但没有比使用实际目标SDK更安全的方法。编译器更改影响旧SDK的可能性与您犯SDK使用错误的可能性相比微不足道。 - Rob Napier
1
我曾在2012年和2013年的WWDC上谈论过这个问题。到目前为止,与Xcode团队面对面交流时,没有人提出一种使当前苹果建议适用于生产代码的安全方法。我刚刚意识到我已经就此问题提交了两个radar,我的原始编号是11985733。除了“重复的7184689(开放)”之外,没有任何回应。对于再次提交我感到抱歉。 - Rob Napier
显示剩余4条评论

1
我在升级到Xcode 5时也遇到了同样的问题,它删除了旧的SDK。但是我从另一台电脑上复制了旧的SDK,并且您可以从以下链接下载相同的SDK。
http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com测试帐户test@yopmail.com/test)
有两种方法可以解决这个问题:
1)解压并将此文件夹粘贴到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs并重新启动xcode。
但是,如果您更新Xcode,则可能会再次删除它。
2)另一种方法是解压并将其粘贴到您想要的位置,然后转到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs并在此处创建符号链接,以便即使您更新Xcode,SDK也将保持不变。
我做出的另一个更改是构建设置>架构>标准(不是64),因此列出了所有部署目标的版本。

如果您只想更改部署目标,则无需下载zip文件。

以下是一些截图。 输入图像描述 输入图像描述


1
好的。如何将这个项目提交给苹果进行审核? - Pavel
有一个组织者。您会在菜单>窗口>组织者中找到该选项。它负责将应用程序提交到应用商店。在此之前,您需要通过菜单>产品>存档来准备构建。如果您已从左上角选择了设备,则只有此选项才能启用。 - AvtarSingh Suchariya
我的意思是如何将这样的应用提交给苹果 :) 这个应用程序是在Xcode 5中使用旧SDK构建的(不是Xcode 5的一部分)。 - Pavel
这也可以仅使用Xcode 5提交,只需选择基本/部署SDK和目标SDK即可。那样就可以完美地提交。不确定苹果是否会批准,但是提交可以完美完成。 - AvtarSingh Suchariya

-8
这个答案是不正确的,而且在Xcode中也不被支持。我只是为了历史原因把它留在这里。

1. 将 SDK 从旧版 Xcode 复制到新版 Xcode

  1. 打开您的 Applications 文件夹。
  2. 右键单击旧版 Xcode,选择 Show Package Contents
  3. 导航至 Contents -> Developer -> Platforms -> iPhoneOS.platform -> Developer -> SDKs
  4. 在一个新窗口中,打开 新版 Xcode 中的相同文件夹。
  5. 将所需的 SDK 从旧版复制到新版。
  6. 如果正在运行新版 Xcode,则现在需要重新启动它。

2. 构建时设置 SDK

在您的项目设置中,选择左侧的目标。然后选择构建设置,再选择Base SDK。现在你应该看到两个版本的 SDK。选择您要构建的 SDK 版本。


1
为什么这个被投票否决了?这是正确的答案,并且适用于Xcode 5。它提供了一种解决方案,可以解决苹果不允许的问题(在iOS7设备上调试iOS 6.1 SDK应用程序)。 - Léo Natan
4
这不是正确的答案,正确的答案是不要这样做,因为它没有支持且不可靠。 - Chris Hanson
这与“NDA Apple crap”无关。@ChrisHanson(在苹果公司工作)正在提供官方说法 - 您不应该这样做,因为它是不受支持的 - 这是公平的。鉴于您可能不需要这样做(您可以将Xcode.app与旧版本并排安装),最好避免这样做。 - al45tair
1
在60秒内提出问题并用准备好的答案回答它。这很令人沮丧。 - Rafał Augustyniak
1
这不是“可悲的”,而是“明确鼓励”。 - Aaron Brager
显示剩余3条评论

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