Xcode 5有一个首选项窗格,允许用户下载iPhone 6.1模拟器,但我找不到允许下载iOS 6 SDK的地方,因此在开发时无法将活动SDK设置为iOS 6使用Xcode 5.是否有允许Xcode 5安装iOS 6 SDK的解决方法?
修改
现在Xcode 5通常可用并且允许您下载以前版本的SDK,因此不再需要变通办法。
答案 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。
以下是一些截图。
答案 2 :(得分:34)
是的,我今天刚解决了这个问题。
然后您可以选择如下的SDK:
希望这会对你有所帮助。
答案 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本身下载旧版本的模拟器 - 只需转到首选项,您就可以在下载中找到它们:
答案 6 :(得分:10)
打开终端窗口
$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/
由于您在系统文件夹中,系统会提示您输入密码
答案 7 :(得分:10)
对我来说最简单的解决方案是:
要在模拟器上测试iOS 6中的应用: - 只需在活动的sheme中选择iOS 6.0即可。
要在iOS 6中构建您的应用程序,因此您的应用程序的设计将是iOS 7上的旧版设计: - 在Targets - Base SDK中选择iOS6.1
请注意:当您更改目标中的基础SDK时,iOS 7.0将不再可用于在模拟器上构建!
答案 8 :(得分:9)
可以做到这一点,但不是真的必要
所以/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
复制之后,这是我的文件夹。
现在重新启动xCode,您可以将以前版本的sdks设置为基本sdk。
推荐Apple Documentaion
要将特定SDK用于Xcode项目,请在项目的构建设置中进行两项选择。
选择部署目标。
这标识了您的软件可以运行的最早的操作系统版本。
选择基本SDK
您的软件可以使用操作系统版本中提供的功能,包括与基本SDK相对应的功能。默认情况下,Xcode将此设置为Xcode支持的最新操作系统。
例如,您可以将iOS 7用作基本sdk,并将iOS 6设置为部署目标。在iOS 6模拟器上运行以测试它在iOS 6上的工作方式。如果模拟器列表不可用,请安装模拟器。
Additionaly您可以无条件地使用iOS 6以上的功能。并且有条件地,您可以支持iOS 7的新功能,以支持新的更新设备,同时支持以前的版本。
可以使用弱链接类,弱链接方法,功能和符号
假设您在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链接到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进行调试的解决方案。
答案 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构建并降低一切都很好,这意味着:
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