Xcode 5、iOS7 和 64 位与 32 位

Posted

技术标签:

【中文标题】Xcode 5、iOS7 和 64 位与 32 位【英文标题】:Xcode 5, iOS7 and 64bit vs 32bit 【发布时间】:2013-09-25 17:58:34 【问题描述】:

我在商店中有一个应用程序,它在 ios 6+ 上支持 32 位(iPhone 4+)

我现在也有一部 iPhone 5S,我目前正在使用 Xcode 5。

我能够在 iOS 7 下成功运行我的应用程序,只需进行最少的调整,只需要一个状态栏。

我现在想发布一个支持 iOS 7 的版本(用于表格视图/控件的外观和感觉),但也为我当前的用户支持 iOS 6。

如何构建我的系统以使其与 iOS 6 和 iOS 7 兼容?

我是否必须为 iOS 7 构建单独提交的 iOS 6 版本和单独的二进制文件?

我也想支持 iPhone 5S 中的 64 位 CPU/架构,我该如何支持?

查看仪器,即使在 iPhone 5s 上运行,我的应用仍然是 32 位的,

我是否必须构建单独的 iOS 6、iOS 7 和 iOS 7 64 位二进制文​​件?并将每个版本分别提交到商店?

【问题讨论】:

在 Architectures 下检查你的 Build 设置,有一个名为 Build Active Architectures only 的设置,Debug 默认为 Yes,Release 默认为 No,都设置为 No。 【参考方案1】:

来自 Apple 发行说明:

https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-7.0/

您现在可以提交适用于 iOS 7 的 64 位应用程序,这些应用程序利用 iPhone 5s 的强大功能。 Xcode 可以使用 32 位和 包含 64 位二进制文​​件,因此它适用于所有运行 iOS 7 的设备。 如果您希望继续支持 iOS 6,那么您需要为 仅限 32 位。下个月我们将进行更改,以便您可以 在 iOS 6 上创建一个支持 32 位的应用程序二进制文件,以及 iOS 7 上的 32 位和 64 位。

我猜你必须为每个版本(iOS 6 32 位、iOS 7 32 位、iOS 7 64 位)编译不同的二进制文件,直到下个月更新。

【讨论】:

XIB 必须转换为支持 iOS 7。这样做会导致它们无法在 iOS 6 上运行吗? 谢谢,这不是意味着向商店提交我的应用程序的 3 个不同版本吗? @JohnWoods 不,您不会向 AppStore 提交 3 个版本。正如答案中所述,如果您想支持 iOS 6,您现在必须使用 32 位版本,等到 Apple 做出更改,然后提交一个支持所有版本的版本(32 位 iOS 6、iOS 7 和 64 位 iOS 7). 干杯都感谢它【参考方案2】:

您需要检查您的 Xcode 构建设置。

第一个重要的设置是 ARCHS,您可以在其中指定您是仅 32 位、32 + 64 位还是仅 64 位。 32 位适用于任何地方,包括 iPhone 5s。 32 + 64 位意味着您的应用程序在 iPhone 5s 上运行得更快。

第二个重要的设置是 IPHONEOS_DEPLOYMENT_TARGET。这是您的应用将在其上运行的最低 iOS 版本。如果是 6.0,您的应用将无法在 iOS 5 上运行。如果是 7.0,您的应用将无法在 iOS 5 或 iOS 6 上运行。

第三个重要的设置是SDKROOT。这就是您正在使用的 SDK。 Apple 希望您将 7.0 SDK 用于任何新应用程序。

部署目标 = 6.0,SDK = 7.0,你必须注意不要在运行 iOS 6 的 iPhone 上使用任何 7.0 的代码。所以你必须编写类似“如果(iOS 7 功能可用)的代码。 使用 iOS 7 功能 else 使用 iOS 6 功能”,只要你想支持 iOS 6。

【讨论】:

非常感谢我的朋友

以上是关于Xcode 5、iOS7 和 64 位与 32 位的主要内容,如果未能解决你的问题,请参考以下文章

32位与64位系统的不同点

32 位与 64 位 Windows 版本上的进程大小和行为差异

32位与64位的区别是啥,64位系统有啥优势

关于windows XP 64位与32位

正确处理 32/64 位

32位与64位之谈