对于iOS 5.1和6,如何让iOS应用程序在iPhone 3GS上运行?

时间:2012-10-18 08:57:28

标签: iphone ios6 armv7

这是一个感兴趣的问题,所以请尽量提供您的答案信息。

我最近将Xcode更新为4.5并且无法访问iOS SDK 5.1。使用几个SO帖子中描述的方法(使用以前的Xcode安装程序中的图像),我再次添加了iOS SDK 5.1。

我希望通过我的应用程序支持的环境是iPhone 3GS,iPhone 4,iPhone 4S和iPhone 5.显然,iOS SDK 5.1和6.0。这些要求的推荐构建设置是什么?

现在我将Deployment Target设置为5.1,Base SDK设置为6.0,架构设置在armv7和armv7s上。这是对的吗?

现在,我认为iOS SDK 5.1不是为armv7s(iPhone 5架构)编译的。如何确保为iOS 6.0编译的代码也适用于iPhone< 5?现在,当没有检查ld: file is universal (4 slices) but does not contain a(n) armv7s slice时,我收到指向iOS 5.1 SDK的链接器错误Build For Active Architectures Only。如何确保在发布到App Store时,应用程序仍可在iOS SDK 5.1上运行。它似乎是与iOS 5.1结合使用armv7s - 这是行不通的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

Deployment Target设置为5.1是正确的,您可以将体系结构保留在ARMv7和ARMv7上。

您不想指向5.1 SDK,只需使用iOS 6 SDK即可。只需确保您不直接调用任何iOS 6 SDK方法或类。

部署目标是此处的关键,它定义了运行此应用程序所需的最低iOS版本,因此将其设置为5.1将使您的应用程序在5.1及更高版本上运行。

答案 1 :(得分:0)

您根本不需要下载SDK 5.1。 SDK 6.0包括SDK 5.1包含的每个库和标题,以及iOS6添加的库和标题。

请务必了解SDK的版本,您的应用与之兼容的iOS版本以及您构建应用的架构之间的区别。

使用 SDK 6.0进行编译并不意味着您的应用只能在iOS6上运行;这意味着您的应用程序将能够在iOS上从您在IOS_DEPLOYMENT_TARGET中设置的版本运行到与SDK对应的版本,即6.0。

因此,如果您希望自己的应用与iOS 5.1及更高版本兼容,您仍然使用Base SDK 6.0进行编译,并且根本不需要SDK 5.1 :您只需设置{ {1}}到5.1和6.0上的Deployment Target(正如你在问题中所说的那样),所以你无处需要SDK 5.1,无论如何都无法编译iOS6,iPhone5和armv7s(它不包含必要的头文件,库和体系结构,这就是为什么SDK 6.0已经发布并且是必要的。)

使用旧的SDK(如果您单独下载)和最新版本的Xcode可能会导致您遇到问题,更重要的是不允许您为高于SDK版本的iOS版本编译您的应用程序(在您的版本中)案例5.1)。所以执行使用SDK 6.0,即使您希望自己的应用与iOS 5.1兼容。


有关您使用的SDK版本(基本SDK),部署目标以及您的应用支持的iOS版本和体系结构之间的差异的详细信息,请阅读Apple文档中的SDK Compatibility Guide ,详细解释了这一切。