是否可以在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。
这里有一些截图。
是的,我今天解决了这个问题。
- 在您的朋友的旧Xcode目录中findSDK文件,如iPhoneOS6.1.sdk。
- 复制到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:
- 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
- 简单复制文件夹iPhoneOS6.X sdk并将其粘贴到您的xcode.app
- 在Applications文件夹中右键单击你的xcode.app。
- 转到目录/开发人员/平台/ iPhoneOS.platform /开发人员/ SDKs /
- 只需粘贴在这里。
- 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。
-
select一个部署目标 。
这标识了软件可以运行的最早的操作系统版本。
-
select一个基本的SDK
您的软件可以使用操作系统版本中可用的function,并且包括与基本SDK相对应的function。 默认情况下,Xcode将其设置为Xcode支持的最新操作系统。
规则是使用最新的基础SDK,并将部署目标设置为应该运行的最低版本应用程序
例如,您可以使用iOS 7作为基础sdk,并将iOS 6设置为部署目标。 在iOS 6模拟器上运行,以testing它如何在iOS 6上运行。安装模拟器(如果模拟器列表不可用)。
另外,您可以无条件地使用iOS 6以上的function。有条件的情况下,您可以在支持以前的版本的同时支持iOS 7的新function,以支持新的更新设备。
这可以使用弱链接类 , 弱链接方法 , 函数和符号来完成
弱连接
假设在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和降低一切都很好,这意味着:
- 你必须使用xcode5
- 你至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