如果我的部署目标是 8.0,我们是不是需要为“armv7”和“arm64”编译 iOS 应用程序?

Posted

技术标签:

【中文标题】如果我的部署目标是 8.0,我们是不是需要为“armv7”和“arm64”编译 iOS 应用程序?【英文标题】:Do we need to compile iOS App for both "armv7" and "arm64" if my deployment target is 8.0?如果我的部署目标是 8.0,我们是否需要为“armv7”和“arm64”编译 iOS 应用程序? 【发布时间】:2016-06-08 00:53:21 【问题描述】:

My App 支持 ios8.0 及以上版本。我知道从 iOS7 开始,它的 arm64 位架构。在这种情况下,我们是否需要为“armv7”和“arm64”切片编译二进制文件?

如果我单独为 arm64 编译,我可以减小我的应用程序大小。这是正确的方法吗?

请帮忙。

【问题讨论】:

【参考方案1】:

Here 你可以找到所有 iPhone 和 Mac CPU 架构的非常容易理解的解释。

当我决定从我支持的架构中移除 armv7 架构时,这对我帮助很大:

排除架构时要谨慎选择。使用 armv7 构建的应用程序将在所有当前的 iOS 设备上运行,即使是那些支持较新架构的设备(它将在 iPhone 5S 及更高版本上以 32 位运行)。但另一方面,不使用 armv7 构建的应用程序将无法在 iPhone 4/4S 或最初的 iPad mini 等旧设备上运行。

【讨论】:

嗨,你终于删除了 armv7 支持吗?你在你的应用程序中看到任何缺点吗?谢谢!【参考方案2】:

根据我对 Apple 文档的理解,当您针对特定架构编译应用程序时,应用程序的大小会减小,这是正确的做法。

苹果文档:

以更少的 CPU 为目标

默认情况下,Xcode 项目配置为生成优化副本 你的应用程序在你的可执行文件的特定于 CPU 的“切片”中。不同的 硬件将运行可执行文件的不同部分。这使 仅在某些设备上才有可能进行的强大优化。 但是,这会大大增加您的应用程序的大小 可执行文件。

要仅针对特定 CPU,请更改架构构建设置 从标准 $(ARCHS_STANDARD) 到特定名称的列表 您想要支持的 CPU。有效的 CPU 名称列在 Valid 架构 (VALID_ARCHS) 构建设置。不要更改有效 架构设置。它是退化的,最好由 Xcode 管理。

更多信息请参考this

【讨论】:

【参考方案3】:

您需要为这两者构建应用程序

【讨论】:

这只是表明需要64位代码。它没有显示还需要 32 位代码。 请查看您必须为 32 位和 64 位构建的最后一行 这只是说它建议使用“标准架构”设置来确保提供 64 位支持。

以上是关于如果我的部署目标是 8.0,我们是不是需要为“armv7”和“arm64”编译 iOS 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

苹果拒绝我的应用程序在 Xcode 中将部署目标从 6.0 更改为 8.0 [重复]

Alamofire 与 Swift 3.0 和部署目标 8.0

如何更改 iPhone 部署目标

有 iOS 9 项目支持 iOS 8

Xamarin.iOS、Xcode 8.0、iOS 10.0 更新和 iPod Touch 测试设备

使用 CocoaPods 时的 Xcode 12 部署目标警告