【问题标题】:iOS: Do iPhone 3GS or younger devices require armv7?iOS:iPhone 3GS 或更年轻的设备是否需要 armv7?
【发布时间】:2012-09-18 00:28:20
【问题描述】:

我有一个第三方库 (ZBar) 在我构建项目时抱怨 armv7 架构(在终端中,使用 xcodebuild),我必须将构建设置中的有效架构设置为 armv6(仅限)。

问题:设置为 armv6 的应用甚至可以在 iPhone 3GS 后的设备上运行吗?

【问题讨论】:

    标签: ios xcode architecture armv7 armv6


    【解决方案1】:

    是的,ARMv6 代码将在 ARMv7 设备上运行,但反之则不行。您可以通过将长时间未更新的应用程序下载到全新的 iPhone 5 上来测试这一点,它应该可以正常运行(虽然没有经过视网膜优化)。

    这是因为这两个指令集向后兼容,但不向前兼容。不过,ARMv6 现在已经不是什么大问题了,因为 Xcode 4.5 的限制是无法编译 ARMv6 代码。

    请注意,iPhone 3GS 实际上是 iOS 设备列表中第一个使用 ARMv7 的设备,可以看出它是最早可以运行 iOS 6 的设备(需要 ARMv7,唯一的例外是第一代iPad),所以只要你的目标是 iOS 4.3+,你根本不需要支持 ARMv6。

    看到 ARMv6 的唯一 4 个设备是(iPhone 2G、iPhone 3G、iPod、iPod 2G)。所有这些设备现在应该已经被替换了,如果没有,这不是我们的错。

    【讨论】:

    • 上述的例外是iPad 1st Generation,它是ARMv7设备,但没有升级到iOS 6。
    • 很好的答案,谢谢!虽然这里有些可疑,因为我有 XCode 4.5,如果我将构建设置中的体系结构设置为“armv6”,它将编译我的代码而没有错误(即使我选择了“iPhone 6.0 模拟器”来构建。
    • 模拟器使用 386 代码,当你在调试模式下运行它时,它不会为其他 armv6、armv7 和 armv7s 构建,因此它不会给你任何错误。但是如果你尝试建立一个档案,它肯定会给你一个 armv6 设置的错误。
    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多