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

Xcode 5有一个首选项窗格,允许一个人下载iPhone 6.1模拟器,但我找不到一个地方,它允许下载iOS 6 SDK,因此不可能将活动SDK设置为iOS 6时,用Xcode 5开发。是否存在允许Xcode 5安装iOS 6 SDK的解决方案?

编辑:

既然Xcode 5已经普遍可用,并且允许你下载以前版本的SDK,那么变通方法应该不再是必要的了。

enter image description here

134790 次浏览

编辑:从2014年2月1日开始,苹果将不再接受ios 7之前的应用程序提交到App Store。因此,虽然这个技巧仍然有效,但对大多数读者来说并不有用。


是的,这很好。我仍然在一个项目中使用iOS 4.3(自从我们更新以来已经有一段时间了;但在iOS 6发布后,他们仍然接受了它),我目前用Xcode 5开发了10.5个应用程序。

有关如何设置它的详细信息,请参阅如何将Xcode指向一个旧的SDK,这样它就可以被用作“基础SDK”?。你可以使用我的fix-xcode

唯一的诀窍就是拿到旧的sdk。如果你没有它们,你通常需要下载旧版本的Xcode(在developer.apple.com上仍然可用),打开安装包,四处寻找你需要的SDK。

sdk可以在安装包中找到:

xcode /内容/开发/平台/

您可以下载旧的SDK并将其安装进去

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

文件夹中。注销+登录只是为了确保更改生效,你应该在你的新XCode中看到旧的SDK

我的应用无缝过渡到Xcode 5,因为它仍然可以使用你在项目中设置的原始iOS部署目标(在我的情况下是5.1)来构建。如果新的SDK不会导致一些不可克服的问题,那么为什么不使用它来构建呢?当然,在引擎盖下有很多改进。

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

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

< p > http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html < br > (www.4shared.com test account test@yopmail.com/test)

有两种方法。

1)解压并粘贴到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS。平台/开发/ sdk,重新启动xcode。

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

2)另一种方法是解压并粘贴到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS。平台/开发者/SDK并在这里创建一个符号链接,这样即使你更新了Xcode, SDK也会保持不变。

我做的另一个改变,构建设置>架构>标准(不是64),所以列出部署目标的所有版本

如果只是想更改部署目标,则不需要下载压缩包。

以下是一些截图。 enter image description here enter image description here

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

  1. 找到SDK文件,比如iPhoneOS6.1。Sdk,在你或你朋友的
  2. <李>复制,把它放到Xcode 5目录中: /应用程序/ xcode /内容/开发/平台/ iPhoneOS.platform /开发/ sdk。李< / >

enter image description here

然后你可以像下面这样选择SDK:

enter image description here

希望这对你有所帮助。

找到并下载旧的SDK。在这里可以找到旧的sdk

我已经复制了xcode。app目录为Xcode_4.6.3.app。

现在你可以在两个xcode版本中进行测试和调试。你必须从相应的文件夹中运行它们,或者在桌面上创建快捷方式。当从命令行构建时,将参数设置为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
我下载了XCode 4,并将iOS 6.1 SDK从它带到XCode 5,如其他答案所述。 然后我还安装了iOS 6.1模拟器(它在首选项中可用)。我还在项目设置中将Base SDK切换到iOS 6.1

在所有这些操作之后,带有6.1基础sdk的项目在iOS 7模拟器中的comp能力模式下运行。

  • 下载Xcode 4.6。从苹果开发中心:https://developer.apple.com/downloads/index.action
  • 在Applications文件夹中创建一个名为Xcode4的文件夹,并将下载的dmg拖放到那里。
  • 打开终端窗口

    $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/
    
  • You will be prompt to enter a password since you're inside a system folder

  • Open Xcode 5 and you should now see both SDKs

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

只需从开发中心链接下载Xcode 4.6.3,上面写着“寻找Xcode的旧版本?”(当前指向在这里)并装入dmg。

然后在终端,复制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时,我宁愿保留以前的安装,而不是替换它们。这些都在我的安装文件夹里

enter image description here

所以/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs包含不同的sdk。(取代Xcode。应用程序与正确的数字)复制以前的SDKS到

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

这是我复制后的文件夹。

enter image description here

现在重新启动xCode,你可以将以前版本的sdk设置为基础sdk。

为什么没有必要

引用Apple Documentaion

为了在Xcode项目中使用特定的SDK,在项目的构建设置中做两个选择。

  1. < p > 选择部署目标

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

  2. < p > 选择基础SDK

    您的软件可以使用OS版本中提供的功能,包括与基本SDK对应的版本。默认情况下,Xcode将此设置为Xcode支持的最新操作系统。

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

例如,你可以使用iOS 7作为基础sdk,并设置iOS 6作为部署目标。在iOS 6模拟器上运行以测试它在iOS 6上的工作方式。安装模拟器,如果模拟器列表不可用。

enter image description here

另外,您可以无条件使用iOS 6以上的功能。有条件地,你可以在支持以前版本的同时,为新更新的设备支持iOS 7的新功能。

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

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上运行,但仍然可以利用更新的功能。

只是补充一下,你实际上可以下载带有Xcode 5本身的旧版本的模拟器——只要进入首选项,你会在下载下面找到它们:

enter image description here

对我来说最简单的解决方法:

  1. 在xcode的旧版本中找到一个旧的SDK,例如“iPhoneOS6.1 SDK”。 如果你还没有,你可以从苹果开发者服务器下载,地址如下: https://developer.apple.com/downloads/index.action?name=Xcode 当你打开xcode。你可以通过打开Xcode找到它。App(右键点击“显示内容”) 进入目录:Contents/Developer/Platforms/iPhoneOS.platform/Developer/ sdk /iPhoneOS6.1 sdk enter image description here
  2. 简单拷贝文件夹“iPhoneOS6. exe”。xsdk,然后粘贴到xcode。app中
    • 右键点击xcode。应用程序文件夹中的应用程序。
    • 进入“Contents/Developer/Platforms/iPhoneOS.platform/Developer/ sdk /”
    • 粘贴在这里。
    • 李< / ul > < / >

enter image description here

  1. 关闭你的xcode应用程序,重新打开它。
要在模拟器上测试iOS 6中的应用程序: -在你的活动场景中选择iOS 6.0即可。 enter image description here

要在iOS 6中构建你的应用,那么你的应用的设计也将是iOS 7 iPhone上的旧设计: —在“Targets - Base SDK

”中选择“iOS6.1”

enter image description here

请注意:当你在你的目标中改变基础SDK时,iOS 7.0将不再可用来构建模拟器!

将6.1 SDK链接到Xcode 5是第一步。然而,这仍然不能解决在iOS 7上运行的新UI元素,视图控制器是全尺寸的等问题。

正如这个答案中所描述的,在iOS 7上还需要将UI切换到遗留模式:

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

注意:这是一个未记录的键,不建议应用程序商店构建!

此外,根据我在设备上测试的经验,我发现它只在我第二次启动应用程序时工作,即使我在应用程序启动的早期运行代码,在+[AppDelegate initialize]中。此外,它与使用Xcode 4.6构建的版本也有细微的区别。例如,透明导航条的行为不同(导致视图是全尺寸的)。

然而,由于Xcode 4.6.3在Mavericks上崩溃(至少对我来说,参见rdar: / / 15318883),这至少是一个继续使用Xcode 5进行调试的解决方案。

我目前已经安装了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

从2月1日起,苹果将拒绝为iOS6或更低版本开发的应用程序。下面是苹果官方的沟通。最好开始为iOS7开发。

澄清一下我的声明:如果你为iOS6或更低版本开发应用,苹果将拒绝你的应用。 如果你为iOS7和更低的版本构建,这意味着:

  1. 您必须使用xcode5
  2. 你至少应该在iOS7上进行部署。

我很清楚苹果邮件的内容

"确保你的应用与创新技术无缝对接 iOS 7。从2月1日开始,新的应用程序和应用程序更新提交到 应用商店必须使用Xcode 5和iOS 7 SDK构建。" < / p >