arm64 armv7 armv7s 架构设置

Posted

技术标签:

【中文标题】arm64 armv7 armv7s 架构设置【英文标题】:arm64 armv7 armv7s Architectures settings 【发布时间】:2014-02-14 04:51:06 【问题描述】:

标准:

    仅限 iPad 的应用程序。仅支持 iPad 2 或更高版本。 想要利用最新 iPad 的 64 位代码。 最低 ios 6。 Xcode 5.02 和 iOS 7 SDK(当前版本)

我应该将架构和有效架构都设置为 arm64 armv7 armv7s?

【问题讨论】:

【参考方案1】:

Xcode 5.0.1 可以构建包含 32 位和 64 位二进制文​​件的应用程序。此组合二进制文件需要 iOS 5.1.1 或更高版本的最低部署目标。 64 位二进制文​​件仅在运行 iOS 7.0.3 及更高版本的 64 位设备上运行。如果您有一个现有的应用程序,您应该首先为 iOS 7 更新您的应用程序,然后将其移植到在 64 位处理器上运行。通过首先为 iOS 7 更新它,您可以删除不推荐使用的代码路径并使用现代实践。如果您要创建新应用,请以 iOS 7 为目标并编译您的应用的 32 位和 64 位版本。

iOS 上 64 位应用程序的架构几乎与 OS X 应用程序的架构相同,因此可以轻松创建在两种操作系统中运行的通用代码库。将 Cocoa Touch 应用程序转换为 64 位遵循与 OS X 上的 Cocoa 应用程序类似的转换过程。指针和一些常见的 C 类型从 32 位更改为 64 位。需要仔细检查依赖于 NSInteger 和 CGFloat 类型的代码。

首先为 64 位运行时构建应用,修复出现的任何警告,并在代码中搜索特定的 64 位问题。例如:

确保所有函数调用都有正确的原型。 避免因意外将 64 位值分配给 32 位数据类型而截断它们。 确保在 64 位版本的应用程序中正确执行计算。 在 32 位和 64 位版本的应用中创建布局相同的数据结构(例如当您将数据文件写入 iCloud 时)。

参考:apple doc

【讨论】:

谢谢。很详细的回答。我看到几个关于 SO 的问题,人们遇到了与 64 位相关的 CGFloat 问题。【参考方案2】:

是的。您可以根据上述条件设置两种架构。但问题是,您应该处理两种情况(32 位和 64 位)的代码。

注意:

给你的附加说明。

    您可以从最低 IOS 5.1 开始支持

    您可以将 Xcode 5.0.1 与 IOS 7 基础 SDK 一起使用

【讨论】:

以上是关于arm64 armv7 armv7s 架构设置的主要内容,如果未能解决你的问题,请参考以下文章

“包含 arm64 的应用程序必须包含 armv7 和 armv7s 架构”应用程序加载器中的错误

我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7

iOS armv7, armv7s, arm64区别与应用32位、64位配置

iOS CPU架构 arm64/armv7s/armv7/armv7k/i386/x86_64

没有要编译的架构 (ARCHS=i386, VALID_ARCHS=arm64 armv7 armv7s)

XCode - 架构 armv7 arm64 的未定义符号