19

我在这个问题上浪费了一整天,找不到解决方案:我一直在用 iOS 6.1 SDK 开发一个应用程序,整个设计依赖于 iOS 6.1 UI。昨天,我将手机更新到 iOS 7,更新完成后,之前部署的应用程序从备份中返回,看起来和以前一样(在 iOS 6.1 上);一切都很好。但是,我必须将我的 Xcode 更新到版本 5,以便在开发期间继续将连续的调试版本部署到我的 iOS 7 设备。在更新到 Xcode 5 之前,我已经从 Xcode 的内部文件夹中备份了 iPhoneOS6.1.sdk 包;然后更新到 Xcode 5,然后将 iPhoneOS6.1.sdk 包放回其文件夹中,在 Xcode 5 安装随附的 iOS 7 SDK 旁边。我已将项目的基础 SDK 切换到 iOS 6.1,

但是,当我将应用程序部署到我的手机时,它看起来就像是垃圾,因为它在 iOS 7 UI 元素中显示。如果我使用安装了 iOS 6.1 的设备,一切看起来都很好;如果我选择在 iOS 7 设备上进行调试,看起来 XCode 并没有对我选择的基本 SDK 感到该死,并将应用程序与 iOS 7 链接起来。

我如何强制 Xcode 将相同的 6.1 链接的东西部署到所有设备,而不管它安装了 iOS 版本?

4

3 回答 3

12

查找并下载旧的 SDK。较旧的 SDK 可在此处找到, https://developer.apple.com/downloads/index.action? name=Xcode

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

这在 Xcode5 和 iOS 中对我来说非常有用。进入 Xcode5 的 SDK 目录。像这样向旧 SDK 添加符号链接:

ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk
于 2013-09-23T11:18:19.377 回答
7

在 Xcode 5 工具栏中,对于您的目标,您将看到您的设备列出了两次(您在问题中也提到了这一点)。出于某种奇怪的原因,一个是用 iOS 6.x 外观构建的,另一个是用 iOS7 外观构建的。尝试在此列表中的一个设备上构建/运行。如果您仍然看到 iOS7 外观,请单击工具栏中的停止,选择其他设备并再次构建。

我在 Xcode 5 中没有看到任何崩溃,因此如果它对您来说经常崩溃,您可能需要重新安装。

于 2013-09-19T14:42:39.753 回答
3

首先,您需要从以前版本的 XCode 中复制并粘贴 iOS 6.1 SDK。我相信其他人已经给出了如何做到这一点的说明。

然后,假设您打算继续开发 iOS 6(例如,不破坏 iOS 6 UI,并且您不打算使用新的 API),请执行以下操作:

  • 每次将 iOS 7 设备插入计算机时,XCode 应识别 2 个设备
  • 在它们两个上运行应用程序(它们实际上是同一台设备,但其中一个将运行应用程序 iOS 6 样式,另一个将尝试将其更新为 iOS 7 样式)
  • 记住运行应用程序 iOS 6 风格的那个(对我来说它是最上面的),然后在设备上执行 Product > Archive

这应该继续允许您使用 iOS 6 样式的 UI 构建应用程序,同时允许您使用 Xcode 5。我建议专门为 UI 更改启动一个新的开发分支,以使您的应用程序的 UI 与 iOS 7 兼容。

于 2013-10-11T10:44:21.500 回答