能否在Xcode 5上安装iOS 6 SDK?

250

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

编辑:

现在Xcode 5已经普遍可用,并允许您下载先前版本的SDK,因此不再需要解决方法。

enter image description here


41
利用 Xcode 5 中的许多改进,同时仍能构建适用于今天应用商店的应用程序。 - Tony
61
嘿,Maddy,“无论如何都要拥抱iOS 7”的意思与GA发布无关。重新设计应用程序的整个设计语言和UX以符合平面设计和重新设计的iOS 7 UI组件的决定和努力既不小,也不能轻易从商业和时间角度考虑。针对SDK 6.1构建将使iOS 7使用iOS 6及之前的UI设计语言(为了支持向后兼容性)。因此,我们可能有很充分的理由希望在Xcode 5中针对6.1 SDK进行开发一段时间。 - Marchy
2
也许是因为他期望SDK与IDE分离,而不是一个庞大的代码堆积体? - phreakhead
1
我目前正在与一位客户合作,该客户尚未准备好接受IOS7 UI的更改,但可以从XCode 5中的Core Data迁移改进中受益。因此,在这种情况下,这正是我想要的。 - Droid Chris
有人可能认为,如果不包括SDK 6.1,Xcode至少会平稳地集成它。但是,就像这个问题一样。 - JohnK
15个回答

3
我的应用程序无缝转换到了Xcode 5,因为它仍然可以使用在项目中设置的原始iOS部署目标进行构建(在我的情况下是5.1)。如果新的SDK没有引起无法克服的问题,那么为什么不使用它进行构建呢?毫无疑问,在幕后有许多改进。
例如,我更喜欢使用Xcode 5而不是Xcode 4.6.3。为什么?因为在Xcode 5中,文本/代码区域的UI滚动不再占用整个CPU线程,所以我的电池寿命会更长。

不使用Xcode 5的原因是目前它非常不稳定。对我来说,每小时都会崩溃。此外,在某些视图中存在一些奇怪的位置问题和颜色问题(尽管修复起来并不需要太多工作)。 - Nick Hingston

2
将6.1 SDK按照其他答案中的描述链接到Xcode 5是其中一步。然而,这仍然无法解决在iOS 7上运行时采用新UI元素、视图控制器变成全屏等问题。
此答案所述,还需要在iOS 7上将UI切换为传统模式。
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

注意:这是一个未记录的密钥,不建议在App Store版本中使用!
此外,在我的测试经验中,我发现这个密钥只有在第二次启动应用程序时才能工作,即使我在应用程序启动早期就运行了代码(在+[AppDelegate initialize]中)。此外,使用Xcode 4.6构建的版本存在微妙的差异。例如,透明导航栏的行为不同(导致视图全尺寸)。
然而,由于Xcode 4.6.3在Mavericks上会崩溃(至少对我来说是这样,见rdar://15318883),这至少是继续使用Xcode 5进行调试的解决方案。

1
从2月1日起,苹果将拒绝仅适用于iOS6或更低版本的应用程序。这里也是苹果官方通信。最好开始构建iOS7的应用程序。
为了澄清我的说法:如果您构建iOS6或更低版本,则苹果将拒绝您的应用程序。如果您构建iOS7及更低版本,则一切都很好,这意味着:
1. 您必须使用xcode5 2. 您应该至少部署在iOS7上。
苹果电子邮件的内容对我来说非常清晰:
“确保您的应用程序与iOS 7中的创新技术无缝配合。从2月1日开始,提交到App Store的新应用程序和应用程序更新必须使用Xcode 5和iOS 7 SDK构建。”

是的,但是iOS 6 SDK也可以很好地与iOS 7配合使用。有些应用程序切换起来确实很麻烦。 - Aniruddh
我认为你是错误的。苹果要求使用最新的Xcode 5构建,并且优化 iOS 7。请参见我的评论Rob Napier's answer中的链接。 - Basil Bourque
我们中的一些人开发企业分发应用程序,需要针对旧的SDK(和设备)进行定位。企业应用程序不需要经过苹果审核流程和/或App Store,这个讨论非常有用,仍然相关,并将在未来继续保持相关性。我理解你的观点,但这并不是唯一的观点。 - Kevin OMara
你完全正确!!!我没有考虑到企业分发。但是不要忘记,你仍然可以通过设置部署目标,在新的Xcode上部署iOS6,而不必担心iOS7的优化和审核过程。 - Andrea

1
我下载了XCode 4,并如其他答案所述,将iOS 6.1 SDK从中导入到XCode 5中。然后,我还安装了iOS 6.1模拟器(在首选项中可用)。我还将项目设置中的Base SDK切换为iOS 6.1。
经过所有这些操作,基于6.1 sdk的项目在iOS 7模拟器中以兼容模式运行。

0

我目前安装了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文件路径:

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

请注意,升级到5.1版本会删除我的7.0.x SDK并替换为7.1 SDK。我有一个旧的Xcode5-DP6安装程序,可以从中恢复7.0.x,但这是备份SDK目录(或完全重命名应用程序)的好提醒,以防在升级或安装最新的Xcode版本时出现问题。 - Wayne

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