2013-09-24 34 views
6

我们ios6.1-SDK编译的应用程序已经在IOS 6.1 iphone 4,4S & 5设备上运行的编译的精细的应用。当在ios7 iphone 5s上运行应用程序时,用户界面仍然看起来像ios 6(黑色按钮等),但我们对其中大部分都很好,除了我们发现了一个错误。我猜这是因为ios7上API实现的改变。IOS 7模拟器不会回退用户界面针对IOS 6.1 SDK

当我们的应用程序被编译针对ios7-SDK的Xcode的5一切都分崩离析。因为我们希望编译我们的代码对ios6.1 sdk,但在ios 7上运行它。

在Xcode 5上,我安装了ios 6.1 sdk by copying it from Xcode 4.6.3 dmg as described on this post并更新了Base SDK到ios 6.1的构建设置,但是当在ios 7模拟器上运行应用程序时,用户界面不会回退到ios 6.1。但是,如果应用程序针对运行ios 7的物理iphone进行测试,它确实会回退到ios 6.1。

如何在运行ios6-sdk编译的应用程序时使ios 7模拟器退回用户界面,以便重现错误在模拟器上?

+0

我不认为这是仿真器模仿该功能的目的。我理解你的思维方式,我也为此付出了努力,我希望我知道iOS 7在我去之前已经知道了那个后备功能,并且急于为iOS 7分类我的代码。但是我认为如果你的应用程序仍然不支持iOS 7 ,请不要使用iOS 7模拟器,而应使用较旧的模拟器(6.1)。最后,模拟器是模拟器,而不是仿真器。它模拟iOS 7的应用程序,但它不模拟iOS 7操作系统。 –

回答

4

感谢所有的帮助,但到目前为止最好的解决方法,让我重现的错误是继续使用xcode 4.6.3并将ios 7模拟器安装到xcode 4.6.3。

我通过同时安装的Xcode 5和4.6.3并排(副本xcode.app到xcode4.6.3.app然后从应用商店安装的Xcode 5(将覆盖xcode.app))这样做,那么符号链接

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

/Applications/Xcode4.6.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

使这个时候进行一定的Xcode不开。如果您已将4.6.3重写为5,则可以从https://developer.apple.com/downloads下载4.6.3的dmg。

然后我把:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iOS Simulator.app

(即:的Xcode 5.0版本的模拟器应用程序的)对我的码头

当测试应用程序,我不得不从被告席手动启动模拟器首先选择相应的设备版本(进入硬件 - >设备 - >选择iphone 3.5“/ 4” - ios6/7),因为xcode 4.6.3无法自动做到这一点(大概是因为版本差异/因为我didn将xcode 5模拟器应用符号链接到4.6.3)

启动时,请确保在xcode 4.6.3 Scheme上选择了“iPhone 7.0 Simulator”。 ios6.1-sdk编译的应用程序在ios 7上运行时会回落到ios 6.1 UI中,并且可以重现我的错误。

+0

啊 - gerrytan,你是男人......这对我有用! – steve

0

您所描述的外观,我很害怕,适用于iOS 7.表视图内容大小可能是正确的行为是不同的计算,例如(这将改变很多元素的位置)以及许多其他变化。

如果您希望保留您的iOS 6的外观,你需要的Xcode 4.6下进行编译,不是5,您仍然可以运行它的iOS 7下,实际上你可以在iOS 7设备出现了通过发展授权它在Xcode 5中,然后切换回Xcode 4.6。

我建议你阅读苹果的iOS 7 Transition Guide,也为有关设计的是iOS 7兼容的UI建议。

+0

是的,我的问题不是外观仍然看起来老旧,而是物理设备的行为与模拟器不同。在使用6.1 sdk编译的物理设备应用程序中,在模拟器中显示为新外观时会回到原来的外观 – gerrytan

+0

这是XCode 5 AFAIK的属性。如果你想要旧的外观,你必须用旧的工具开发 - 如果你想要新的工具,你必须升级。对不起,可能不是你想要的答案 - 但它是没有疯狂的符号链接黑客攻击的唯一答案。 编辑:我看到有人有详细的! – tooluser

0

尝试在模拟器中“重置内容和设置”,并确保在构建&运行时在XCode中为您的方案使用正确的模拟器和SDK。如果您按照您的描述安装了iOS 6.1 SDK,您应该首先看到在您的目标系统中可用的模拟器列表中出现的重复内容 - 其中之一会为您提供所需的行为(很可能是“iOS 7.0 | iOS 7.0 SDK“,但并不总是如此)。确保您的部署目标设置为6.1或更低版本,并将基本SDK设置为6.1(如您所描述的)

+0

谢谢我已经做了所有,但我仍然不能让ios 7模拟器回落到ios 6的外观和感觉 – gerrytan

4

如果我正确理解您的问题... 我一直在遇到与我们的应用程序相同的问题并需要保持内置于Xcode 5并在iOS7中运行的iOS6.1接口。我们的界面也搞乱了,错位和工具栏丢失了按钮。我们将在7以后修复它,但现在没有时间,但需要它在iOS7上运行,并且仍然在Xcode 5中构建。

因此,这里是我所做的: (我想发布一些屏幕截图,但没有我的Mac得心应手,如果需要,将在以后得到)

  • 我不停的Xcode 4.6.3装在Xcode 5.
  • 沿着予添加符号链接从6.1 SDK到的Xcode 5安装。 (我发现了一个SO问题,会找到一个链接)或者你可以像你一样安装它。

(可能不需要这些未来2个选择,但我们最终在测试中使用它们,和它的作品,甚至新的5S 64位电话)

  • 在生成设置我选择的构建架构要使用标准的非64位armv7选项,请不要选择“包括64位”选项。

  • 同一个地方,积极构建体系结构只为Yes

则...

  • 也生成设置设置基准SDK到iOS 6.1。 (我相信这是使它工作的关键)

  • 应用目标的常规选项卡上,部署目标设定为6.1(我们仍然是5.1,现在是)

  • 在我们的故事板,选择文件检查器在我选择的界面构建器部分中,将在Xcode 4.6中打开,并在iOS 5.1和更高版本中打开,并在iOS 6.1和更早版本中查看。 (我的自动布局未经检查,我们不使用它)

有关最后一个选项“打开”的警告。如果您选择“在Xcode 4.6中打开”,您将失去iOS7的Storyboard编辑。就我而言,我现在不在乎,因为我希望它仍然保留在4.6视图中。要时刻铭记在心。我认为你可以切换回去,但还没有测试过。

在6.1 SDK链接/安装时,您应该可以在应用程序中运行时选择所需的iOS版本以用于模拟器。您将在顶部工具栏的Active Schema下拉菜单中看到它。就我而言,例如,我可以选择iPhone Retina(4英寸)及以下,我可以选择iOS7或6.1。对于我来说有趣的部分是,使用上面的设置,我可以在模拟器中运行我的应用程序,即使我选择iOS7作为模拟器活动模式,它也看起来像iOS6。它甚至在64位模拟器中工作,在我的设置中,它只会显示iOS7选择。

至少我可以在Xcode 5中构建和工作,为iOS7用户专门分发应用程序,但保留iOS6样式,位置和按钮的完整性。现在,我可以花更多时间转换到iOS7样式,但仍然可以修复错误并更新应用,就像它是iOS6.1一样。

我希望这是有道理的,我希望它能回答你的问题。我希望我记得我所做的一切!如果我想到一些东西,我会增加更多。

+0

这似乎并没有为我工作...我做的唯一不同的是复制6.1 SDK而不是符号链接。还有什么你能想到的吗? – steve

+0

现在还没有考虑其他任何东西,但我会花一些时间用另一个尚未在Xcode 5中运行的项目。也许我会在这个过程中发现其他的东西。我会尝试并获得屏幕截图。可能需要我花几天的时间才能实现。 哦,有一件事情可能并不重要,但...在我的一个视图控制器上,我有几个控件,我在代码中手动调整大小。由于IOS7大小的变化,它弄乱了我的代码。我把所有这一切都拿出来,并在IB房产中做了更好的调整,然后那个特定的视图运行良好 – gregthegeek