首页 文章

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

提问于
浏览
246

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

EDIT:

现在,Xcode 5通常可用,并且允许您下载SDK的先前版本,因此不再需要解决方法 .

enter image description here

15 回答

  • 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/

  • 2

    当我更新到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> Architectures> standard(而不是64),因此列出了Deployment Target的所有版本

    No need to download the zip if you only wanted to change the deployment target.

    这是一些截图 .
    enter image description here

    enter image description here

  • 10

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

    • 在您或您朋友的旧Xcode目录中找到SDK文件,如iPhoneOS6.1.sdk .

    • 复制并将其放入Xcode 5目录:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs .

    enter image description here

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

    enter image description here

    希望这对你有所帮助 .

  • 9

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

    我已将xcode.app目录复制为Xcode_4.6.3.app .

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

    This worked great for me in Xcode5 and 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
    
  • 60

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

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

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

  • 10

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

    enter image description here

  • 11
    $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

  • 1

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

    • 例如,在较旧版本的xcode中找到旧版SDK,例如"iPhoneOS6.1 sdk" . 如果还没有,你可以从这个地址的Apple Developer服务器下载它:https://developer.apple.com/downloads/index.action?name=Xcode当你打开xcode.dmg时,你可以通过打开Xcode.app(右键单击和"show contents")找到它并转到目录/开发人员/平台/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1 sdk
      enter image description here

    • 简单复制文件夹iPhoneOS6.X sdk并将其粘贴到xcode.app中

    • 右键单击您的xcode.app在Applications文件夹中 .

    • 转到目录/开发人员/平台/ iPhoneOS.platform / Developer / SDKs /

    • 只需粘贴在这里 .

    enter image description here

    • 关闭您的xcode应用程序并重新打开它 .

    要在模拟器上测试iOS 6中的应用程序: - 只需在活动的sheme中选择iOS 6.0即可 .
    enter image description here

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

    enter image description here

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

  • 20

    Can do this ,但不是真的有必要

    如何做到这一点

    杰森李得到了答案 . 安装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项目,请在项目的构建设置中进行两项选择 .

    • Choose a deployment target .

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

    • Choose a base SDK

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

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

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

    enter image description here

    另外,您可以无条件地使用iOS 6以上的功能 . 并且有条件地,您可以支持iOS 7的新功能,以支持新版本,同时支持以前的版本 .

    这可以使用 Weakly Linked ClassesWeakly Linked MethodsFunctionsSymbols 完成

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

  • 11

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

    只需从开头中心链接下载Xcode 4.6.3,该链接显示"Looking for an older version of 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,你就完成了 .

  • 3

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

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

  • 1

    如其他答案中所述,将6.1 SDK链接到Xcode 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进行调试的解决方案 .

  • 0

    我按照其他答案的描述下载了XCode 4并将iOS 6.1 SDK从它带到了XCode 5 . 然后我还安装了iOS 6.1 Simulator(它在首选项中可用) . 我还将Base SDK切换到了iOS6.1在项目设置中 .

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

  • 4

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

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

    • 你必须使用xcode5

    • 你应该至少在iOS7上部署 .

    Apple电子邮件的内容非常清楚

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

  • 34

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

相关问题