是否可以在Xcode 5上安装iOS 6 SDK?

Xcode 5有一个允许下载iPhone 6.1模拟器的偏好窗格,但是我找不到允许下载iOS 6 SDK的地方,因此在使用Xcode 5进行开发时,无法将活动SDK设置为iOS 6有没有一种解决方法可以让Xcode 5安装iOS 6 SDK?

编辑:

现在Xcode 5一般都可以使用,并且允许你下载以前版本的SDK,所以现在不再需要变通方法了。

在这里输入图像描述

编辑:从2014年2月1日开始,苹果将不再接受iOS7以前的应用程序提交给App Store。 所以,虽然这种技术仍然有效,但对于大多数读者来说,这并不会有用。


是的,这很好。 我仍然使用iOS 4.3构build一个项目(这已经过去了一段时间,但是iOS 6出来之后仍然可以接受),而且我现在用Xcode 5构build了10.5个应用程序。

请参阅如何将Xcode指向旧版SDK,以便将其用作“基本SDK”? 有关如何设置的详细信息。 每次升级时,您都可以使用我的fix-xcode脚本为您链接所有内容。

唯一的窍门是获得旧的SDK。 如果你没有它们,你通常需要下载旧版本的Xcode(在developer.apple.com上仍然可以find),打开安装包,然后寻找你需要的SDK。

在安装程序包中可以findSDK:

Xcode.app/Contents/Developer/Platforms/

当我更新到xcode 5时,我也遇到了同样的问题,它删除了旧的sdk。 但我从另一台计算机上拿到了旧的SDK的副本,你可以从下面的链接下载。

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.comtesting帐户test@yopmail.com/test)

有两种方式可以使用。

1)将此文件夹解压并粘贴到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs并重新启动xcode。

但是,如果你更新xcode,这可能会再次被Xcode删除。

2)另一种方法是解压缩并粘贴到您想要的位置,然后转到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs并在此创build一个符号链接,这样SDK即使你更新Xcode。

我做了另一个修改,Build Setting> Architectures> standard(不是64),所以列出了Deployment Target的所有版本

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

这里有一些截图。 在这里输入图像描述在这里输入图像描述

是的,我今天解决了这个问题。

  1. 在您的朋友的旧Xcode目录中findSDK文件,如iPhoneOS6.1.sdk。
  2. 复制到Xcode 5目录:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs。

在这里输入图像描述

然后你可以select如下的SDK:

在这里输入图像描述

希望这可以帮助你。

find并下载旧的SDK。 较旧的SDK在这里find 。

我已经将Xcode.app目录复制为Xcode_4.6.3.app。

现在您可以在两个xcode版本中进行testing和debugging。 您必须从相应的文件夹运行它们或在桌面上创build快捷方式。 从命令行构build时,将参数设置为iPhoneOS6.1而不是iPhoneOS7.0

这在Xcode5和iOS中非常适合我。

进入Xcode5的SDK目录。 它通常位于:

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs 

像这样添加一个符号链接到旧的SDK:

 sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk 

或者更准确地说,从命令行的任何地方,

 sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk 

你可以下载旧的SDK并安装它

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

夹。 注销+login只是为了确保更改生效,您应该在新的XCode中看到旧的SDK

只要补充一点,您实际上可以用Xcode 5自行下载旧版本的模拟器 – 只要进入偏好设置,您就可以在下载中find它们:

在这里输入图像描述

  • 从Apple开发人员中心下载Xcode 4.6.x: https : //developer.apple.com/downloads/index.action
  • 在应用程序文件夹中创build一个名为Xcode4的文件夹,然后在其中拖放下载的dmg。
  • 打开一个terminal窗口

     $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 
  • 由于您位于系统文件夹内,因此系统会提示您input密码

  • 打开Xcode 5,你现在应该看到两个SDK

为我提供最简单的解决scheme:

  1. find一个比较旧的SDK,例如在老版本的xcode中,例如“iPhoneOS6.1 sdk”。 如果你还没有,你可以从Apple Developer服务器下载这个地址: https : //developer.apple.com/downloads/index.action? name = Xcode当你打开xcode.dmg,你可以通过打开Xcode.app(右键点击“显示内容”)并进入目录/ Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk 在这里输入图像描述
  2. 简单复制文件夹iPhoneOS6.X sdk并将其粘贴到您的xcode.app
    • 在Applications文件夹中右键单击你的xcode.app。
    • 转到目录/开发人员/平台/ iPhoneOS.platform /开发人员/ SDKs /
    • 只需粘贴在这里。

在这里输入图像描述

  1. closures你的Xcode应用程序并重新打开它。

要在模拟器上testingiOS 6中的应用程序,请执行以下操作: – 只需在活动时间表中selectiOS 6.0。 在这里输入图像描述

要在iOS 6中构build您的应用程序,您的应用程序的devise将成为iOS 7上iPhone的较旧devise: – 在“目标 – 基础SDK”中selectiOS6.1

在这里输入图像描述

请注意:当您更改目标中的基础SDK时,iOS 7.0将不再可用于构build模拟器!

可以做到这一点 ,但不是真的有必要

如何做到这一点

Jason Lee得到了答案。 安装xCode时,我首选保留以前的安装,而不是replace它们。 所以我有这些在我的安装文件夹

在这里输入图像描述

所以/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs包含不同的sdks。 (用正确的编号replaceXcode.app)将之前的sdks复制到

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

这是我复制一个后我的文件夹。

在这里输入图像描述

现在重新启动xCode,您可以将sdks的早期版本设置为基本sdk。

为什么没有必要

参考Apple Documentaion

要为Xcode项目使用特定的SDK,请在项目的构build设置中进行两个select。

  1. select一个部署目标

    这标识了软件可以运行的最早的操作系统版本。

  2. select一个基本的SDK

    您的软件可以使用操作系统版本中可用的function,并且包括与基本SDK相对应的function。 默认情况下,Xcode将其设置为Xcode支持的最新操作系统。

规则是使用最新的基础SDK,并将部署目标设置为应该运行的最低版本应用程序

例如,您可以使用iOS 7作为基础sdk,并将iOS 6设置为部署目标。 在iOS 6模拟器上运行,以testing它如何在iOS 6上运行。安装模拟器(如果模拟器列表不可用)。

在这里输入图像描述

另外,您可以无条件地使用iOS 6以上的function。有条件的情况下,您可以在支持以前的版本的同时支持iOS 7的新function,以支持新的更新设备。

这可以使用弱链接类弱链接方法函数符号来完成

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

弱连接

假设在Xcode中,您将部署目标(最低要求版本)设置为iOS6,目标SDK(最高允许版本)设置为iOS7。 在编译期间,编译器会弱连接iOS7中引入的任何接口,同时强烈链接早期的接口。 这将允许您的应用程序在iOS6上继续运行,但在可用时仍可利用更新的function。

这里的其他答案也是正确的,但我发现以下步骤是最简单的:

只需从开发人员中心链接下载Xcode 4.6.3,即“寻找Xcode的旧版本? (目前在这里指出)并挂载dmg。

然后在terminal中,复制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,你就完成了。

我的应用程序无缝转换到Xcode 5,因为它仍然可以使用您在项目中设置的原始iOS部署目标(5.1,在我的情况下)来构build。 如果新的SDK不会导致一些不可逾越的问题,那为什么不使用它呢? 引擎盖下肯定有很多改进。

例如,我会更喜欢使用Xcode 5而不是Xcode 4.6.3。 为什么? 我将获得更多的电池寿命,因为Xcode 5中的文本/代码区域的UI滚动不再咀嚼整个CPU线程。

如其他答案中所述,将6.1 SDK连接到Xcode 5是一个步骤。 但是这仍然不能解决在iOS 7新的UI元素上运行的问题,视图控制器被做成全尺寸的等等。

如本答案中所述,还需要在iOS 7上将用户界面切换为传统模式:

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"]; [[NSUserDefaults standardUserDefaults] synchronize]; 

注意:这是一个无证的密钥,不build议用于App Store构build!

另外,根据我在设备上testing的经验,我发现它仅在我启动应用程序的第二次时才起作用,即使我在应用程序启动时相当早的运行代码,在+[AppDelegate initialize] 。 另外,使用Xcode 4.6构build的版本也有细微差别。 例如,透明导航栏的行为不同(导致视图为全尺寸)。

但是,由于Xcode 4.6.3在Mavericks上崩溃(至less对我来说,请参阅rdar:// 15318883 ),这至less是继续使用Xcode 5进行debugging的一种解决scheme。

我下载了XCode 4,并将iOS 6.1 SDK从其它的答案中描述到XCode 5。 然后,我也安装了iOS 6.1模拟器(它可以在首选项中使用)。 我也在项目设置中将Base SDK切换到iOS 6.1。

在所有这些操作之后,具有6.1 base sdk的项目将在iOS 7 Simulator中以能力模式运行。

从2月1日起,苹果将拒绝仅针对iOS6或更低版本构build的应用程序。 这里也是苹果的官方通讯 。 更好地开始构buildiOS7。

为了澄清我的陈述:如果你为iOS6或更低版本构build,苹果将拒绝你的应用程序。 如果你为iOS7构build和降低一切都很好,这意味着:

  1. 你必须使用xcode5
  2. 你至less应该在iOS7上部署。

苹果电子邮件的内容对我来说很清楚

“确保您的应用程序与iOS 7中的创新技术无缝配合。从2月1日开始,提交给App Store的新应用程序和应用程序更新必须使用Xcode 5和iOS 7 SDK构build。

我目前已经安装了Xcode 4.6.3和5.0。 我使用以下bash脚本将5.0链接到旧版本的SDK:

 platforms_path="$1/Contents/Developer/Platforms"; if [ -d $platforms_path ]; then for platform in `ls $platforms_path` do sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs; done; fi; 

您只需要提供.app的path即可:

 ./xcode.sh /Applications/Xcode-463.app