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

时间:2013-08-24 22:43:42

标签: ios xcode ios6 xcode5

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

15 个答案:

答案 0 :(得分:202)

编辑:从2014年2月1日开始,Apple将不再接受iOS7之前的应用程序提交到App Store。因此,尽管这种技术仍然有效,但它对大多数读者来说都没有用。


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

有关如何设置的详细信息,请参阅How to point Xcode to an old SDK so it can be used as a "Base SDK"?。你可以使用我的fix-xcode 每次升级时都会为您链接所有内容的脚本。

唯一的技巧是获取旧的SDK。如果你没有它们,你通常需要下载旧版本的Xcode(仍在developer.apple.com上提供),打开安装程序包,然后寻找你需要的SDK。

SDK可以在安装程序包中找到:

  

Xcode.app/Contents/Developer/Platforms /

答案 1 :(得分:60)

当我更新到xcode 5时,我也遇到了同样的问题,它删除了旧的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,这可能会被Xcode删除。

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

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

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

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

答案 2 :(得分:34)

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

  1. 在您或您的朋友中找到SDK文件,如iPhoneOS6.1.sdk 较旧的Xcode目录。
  2. 复制&把它放到Xcode 5目录中: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs。
  3. enter image description here

    然后您可以选择如下的SDK:

    enter image description here

    希望这会对你有所帮助。

答案 3 :(得分:20)

查找并下​​载旧SDK。 Older SDKs are found here

我已将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

答案 4 :(得分:11)

您可以下载旧版SDK并将其安装在

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

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

答案 5 :(得分:11)

要添加,您实际上可以使用Xcode 5本身下载旧版本的模拟器 - 只需转到首选项,您就可以在下载中找到它们:

enter image description here

答案 6 :(得分:10)

  • 从Apple开发中心下载Xcode 4.6.x: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/
    
  • 由于您在系统文件夹中,系统会提示您输入密码

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

答案 7 :(得分:10)

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

  1. 例如,在较旧版本的xcode中找到较旧的SDK,例如“iPhoneOS6.1 sdk”。 如果还没有,可以在Apple地址的Apple Developer服务器上下载: https://developer.apple.com/downloads/index.action?name=Xcode 当您打开xcode.dmg时,您可以通过打开Xcode.app(右键单击并“显示内容”)找到它。 并转到Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk enter image description here
  2. 简单复制文件夹iPhoneOS6.X sdk并将其粘贴到xcode.app中
    • 右键单击Applications文件夹中的xcode.app。
    • 转到目录/开发人员/平台/ iPhoneOS.platform / Developer / SDKs /
    • 只需粘贴此处。
  3. enter image description here

    1. 关闭您的xcode应用并重新打开它。
    2. 要在模拟器上测试iOS 6中的应用:   - 只需在活动的sheme中选择iOS 6.0即可。 enter image description here

      要在iOS 6中构建您的应用程序,因此您的应用程序的设计将是iOS 7上的旧版设计:   - 在Targets - Base SDK中选择iOS6.1

      enter image description here

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

答案 8 :(得分:9)

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

如何做到这一点

杰森李得到了答案。安装xCode时,我更喜欢保留以前的安装而不是替换它们。所以我在我的安装文件夹

中有这些

enter image description here

所以/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs包含不同的sdks。 (将Xcode.app替换为正确的数字)将以前的sdks复制到

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

复制之后,这是我的文件夹。

enter image description here

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

为什么没有必要

推荐Apple Documentaion

要将特定SDK用于Xcode项目,请在项目的构建设置中进行两项选择。

  1. 选择部署目标

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

  2. 选择基本SDK

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

  3. 规则是使用latest作为基本SDK并将部署目标设置为应该运行的最小版本应用

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

    enter image description here

    Additionaly您可以无条件地使用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上运行,但仍然可以利用更新的功能。

答案 9 :(得分:4)

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

只需从开发中心链接下载Xcode 4.6.3,该链接显示“正在寻找旧版本的Xcode?” (目前指向here)并安装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,你就完成了。

答案 10 :(得分:3)

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

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

答案 11 :(得分:2)

如其他答案中所述,将6.1 SDK链接到X​​code 5是一步。但是,这仍然无法解决在iOS 7上运行新的UI元素,视图控制器是全尺寸等问题。

this answer中所述,还需要在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进行调试的解决方案。

答案 12 :(得分:1)

我已经下载了XCode 4,并将iOS 6.1 SDK从其中带到了XCode 5,如其他答案中所述。 然后我还安装了iOS 6.1 Simulator(它在首选项中可用)。我还在项目设置中将Base SDK切换到iOS 6.1。

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

答案 13 :(得分:1)

从2月1日起,Apple将拒绝仅针对iOS6或更低版本构建的应用程序。这也是Apple的官方communication。最好开始为iOS7构建。

澄清我的陈述:如果您为iOS6或更低版本构建,Apple将拒绝您的应用。 如果您为iOS7构建并降低一切都很好,这意味着:

  1. 您必须使用xcode5
  2. 至少应该在iOS7上部署。
  3. Apple电子邮件的内容非常清楚

      

    “确保您的应用与创新技术无缝协作   在iOS 7.从2月1日开始,提交新的应用和应用更新   必须使用Xcode 5和iOS 7 SDK构建App Store。“

答案 14 :(得分: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