【问题标题】:$(ARCHS_STANDARD_32_BIT) vs. armv6, armv7/armv7s vs. i386$(ARCHS_STANDARD_32_BIT) 与 armv6、armv7/armv7s 与 i386
【发布时间】:2012-01-09 12:50:57
【问题描述】:

我有一个应该在 armv7 和 armv6 上运行的 iPhone 应用程序。为了调试,应用程序也应该在模拟器中运行。

Xcode 4.2 中的标准是这样的:

armv7 ($(ARCHS_STANDARD_32_BIT))

我不清楚$(ARCHS_STANDARD_32_BIT) 代表什么以及是否应该使用这两个:

  1. $(ARCHS_STANDARD_32_BIT)
  2. armv6

或者三个都这样

  1. armv6
  2. armv7
  3. i386

在我的情况下,最好的选择是什么?以及Architectures 如何与Valid Architectures 一起使用

【问题讨论】:

  • 当使用armv6armv7 作为architecture(没有i386)时,我现在可以为armv6 编译它。所以目前我没有使用$(ARCHS_STANDARD_32_BIT)
  • $(ARCHS_STANDARD_32_BIT) 在 Xcode 默认模板中定义,您无法修改该模板,但您可以通过自己的配置来覆盖它。它曾经被定义为“armv6 arv7”,但他们在 4.2 中将其更改为“armv7”。我能够通过使用您的第一种技术来恢复旧行为,但仅限于使用 iOS SDK 的目标(您必须单击构建设置中的小“(+)”按钮才能为 SDK iOS vs 模拟器添加行,并且仅针对 iOS 进行更改)。
  • 有谁知道哪些iOS设备需要armv6?主要是下面评论中提到的 iPod Touch 3G 吗?

标签: objective-c ios xcode


【解决方案1】:

要在模拟器中运行,您无需执行任何操作。

您可以将Valid Architectures 设置保留为armv6 armv7,因为根据文档:

在构建期间,此列表与 ARCHS 的值相交 构建设置

要支持 armv6 和 armv7,请将架构设置为 $(ARCHS_STANDARD_32_BIT) armv6,$(ARCHS_STANDARD_32_BIT) 目前扩展为 armv7。

还要检查您的 plist 文件中是否有“必需的设备功能”=UIRequiredDeviceCapabilities 设置,因为 Xcode 将在那里为新项目添加 armv7。

【讨论】:

  • 这完全有道理。出于某种原因 - 仍然未知 - Xcode 开始抱怨 [BEROR]No architectures to compile for (ARCHS=armv6, VALID_ARCHS=i386)。这仅适用于模拟器构建。将 i386 添加到有效架构列表会导致不同的错误“gcc 退出代码 255”。所以,你的答案很成功。我放入了涵盖模拟器和 armv7 的 $(ARCHS_STANDARD_32_BIT),并添加了另一行 armv6 专门用于 iPod Touch 3G 8GB。
  • 我遇到了与@MaxMacLeod 完全相同的问题,这解决了它 - ARCHS 设置为 $(ARCHS_STANDARD_32_BIT) 但 VALID_ARCHS 设置为 armv7。将两者都更改为 $(ARCHS_STANDARD_32_BIT) 有效 - 虽然我真的不明白 i386 未列出时如何成为有效目标!
  • @k1th 不错的答案.. 参考不会受到伤害.. 我想知道您在哪里弄清楚 ARCHS_STANDARD_32_BIT 的含义(无论如何都给了您+1 :)
  • 有一个plist:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneOSArchitectures.xcspec
【解决方案2】:

Xcode 4.5 更新:Apple 添加了新架构 armv7s,它为 iPhone 5 的新硬件添加了优化。

由于我无法在新 iPhone5 上测试我们的应用程序,因此我将支持的架构从 $(ARCHS_STANDARD_32_BIT)(即 armv7 + armv7s)更改为仅 armv7,从而从我们的应用程序中删除了此架构。

如果您想要或必须支持旧款 iPhone 3G,您还需要添加armv6

架构有效架构都需要这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2012-01-23
    • 2011-07-16
    相关资源
    最近更新 更多