Xcode 5具有一个首选项窗格,该窗格允许人们下载iPhone 6.1模拟器,但是我找不到可以下载iOS 6 SDK的地方,因此在使用Xcode 5开发时,无法将活动SDK设置为iOS 6是否有允许Xcode 5安装iOS 6 SDK的解决方法?
编辑:
既然Xcode 5普遍可用,并且您可以下载SDK的早期版本,则不再需要变通方法。
Xcode 5具有一个首选项窗格,该窗格允许人们下载iPhone 6.1模拟器,但是我找不到可以下载iOS 6 SDK的地方,因此在使用Xcode 5开发时,无法将活动SDK设置为iOS 6是否有允许Xcode 5安装iOS 6 SDK的解决方法?
编辑:
既然Xcode 5普遍可用,并且您可以下载SDK的早期版本,则不再需要变通方法。
Answers:
编辑:从2014年2月1日开始,Apple将不再接受iOS7之前的应用程序提交到App Store。因此,尽管该技术仍然有效,但对大多数读者而言将无用。
是的,这很好。我仍然为一个项目使用iOS 4.3进行构建(自我们更新以来已经有一段时间了;但是在iOS 6推出后,他们仍然接受它),并且我目前使用Xcode 5构建10.5应用程序。
请参阅如何将Xcode指向旧的SDK,以便可以将其用作“基本SDK”?有关如何设置的详细信息。您可以 在每次升级时使用我的fix-xcode脚本为您链接所有内容。
唯一的技巧是获取旧的SDK。如果没有它们,通常需要下载旧版本的Xcode(仍可在developer.apple.com上找到),打开安装程序包,然后四处寻找所需的SDK。
可以在安装程序包中找到SDK,网址为:
Xcode.app/内容/开发人员/平台/
当我更新到xcode 5时,我也遇到了同样的问题,它删除了较旧的sdk。但是我从另一台计算机上获得了旧版SDK的副本,您可以从以下链接下载该副本。
http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html(www.4shared.com
测试帐户test@yopmail.com/test)
有2种工作方式。
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并在此处创建符号链接,这样,即使您更新Xcode。
我进行的另一项更改是“构建设置”>“体系结构”>“标准”(不是64),因此请列出“部署目标”的所有版本
如果您只想更改部署目标,则无需下载zip。
这是一些屏幕截图。
是的,我今天解决了这个问题。
然后,您可以选择如下所示的SDK:
希望这对您有帮助。
查找并下载旧的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
您可以下载较旧的SDK并将其安装在
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
夹。注销+登录只是为了确保更改生效,并且您应该在新的XCode中看到较旧的SDK
只需添加一下,您实际上就可以使用Xcode 5本身下载模拟器的旧版本-只需转到首选项即可在“下载”下找到它们:
打开终端窗口
$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/
由于您位于系统文件夹中,因此系统会提示您输入密码
对我来说,最简单的解决方案是:
要在模拟器上的iOS 6中测试应用,请执行以下操作:-只需在活动的Sheme中选择iOS 6.0。
要在iOS 6中构建您的应用,因此您的应用设计将是具有iOS 7的iPhone上的较旧设计:-在Targets中选择iOS6.1-基本SDK
只需注意:在Targets中更改基本SDK时,将无法在模拟器上构建iOS 7.0!
可以做到,但不是真的有必要
杰森·李(Jason Lee)得到了答案。在安装xCode时,我倾向于保留以前的安装,而不是替换它们。所以我的安装文件夹中有这些
因此,/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
包含不同的SDK。(用正确的数字替换Xcode.app)将以前的SDK复制到
/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
这是我复制一个文件夹后的文件夹。
现在重新启动xCode,您可以将早期版本的sdks设置为基本sdk。
引用Apple Documentaion
要将特定的SDK用于Xcode项目,请在项目的构建设置中进行两个选择。
选择一个部署目标。
这标识了可以在其上运行软件的最早的OS版本。
选择一个基本的SDK
您的软件可以使用OS版本中可用的功能,包括(包括与基本SDK相对应的)OS版本。默认情况下,Xcode将此设置为Xcode支持的最新操作系统。
例如,您可以将iOS 7用作基本SDK,并将iOS 6设置为部署目标。在iOS 6模拟器上运行以测试其在iOS 6上的工作方式。如果模拟器列表中没有该模拟器,请安装模拟器。
另外,您可以无条件地使用iOS 6之前的功能。并且有条件地,您可以在支持以前版本的同时为新的更新设备支持iOS 7的新功能。
这可以通过使用弱链接类,弱链接方法,函数和符号来完成
假设在Xcode中将部署目标(最低要求版本)设置为iOS6,将目标SDK(最大允许版本)设置为iOS7。在编译期间,编译器将弱链接iOS7中引入的任何接口,而强链接早期的接口。这将使您的应用程序可以继续在iOS6上运行,但仍可利用可用的较新功能。
这里的其他答案也是正确的,但是我发现以下步骤是最简单的:
只需从开发中心链接下载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 5,因为它仍然可以使用您在项目中设置的原始iOS部署目标(本例中为5.1)进行构建。如果新的SDK不会引起一些无法解决的问题,那么为什么不使用它进行构建呢?当然,引擎盖下有许多改进。
例如,我将更喜欢使用Xcode 5而不是Xcode 4.6.3。为什么?我会得到更多的电池寿命,因为Xcode 5中的UI滚动文本/代码区域不再消耗整个CPU线程。
如其他答案所述,将6.1 SDK链接到Xcode 5是一个步骤。但是,这仍然不能解决以下问题:在iOS 7上运行时会采用新的UI元素,将视图控制器设为全尺寸等。
如此答案中所述,还需要将UI切换到iOS 7上的旧版模式:
[[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进行调试的解决方案。
从2月1日起,Apple将拒绝仅适用于iOS6或更低版本的应用程序。这也是官方通信从苹果。最好开始为iOS7构建。
为了阐明我的观点:如果您是针对iOS6或更低版本构建的,Apple将拒绝您的应用程序。如果您是针对iOS7构建的,则降低一切就可以了,这意味着:
Apple电子邮件的内容对我来说很清楚
“确保您的应用程序可以与iOS 7中的创新技术无缝协作。从2月1日开始,必须使用Xcode 5和iOS 7 SDK构建提交给App Store的新应用程序和应用程序更新。”
我目前安装了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
Xcode5-DP6
,可以从其中恢复7.0.x,但这是一个很好的提醒,请先备份SDK目录(或完全重命名应用程序),然后再升级或安装最新的Xcode版本。