代码之家  ›  专栏  ›  技术社区  ›  Nick

“警告:iPhone应用程序应该包括ARMV6体系结构”,即使构建配置集

  •  330
  • Nick  · 技术社区  · 14 年前

    我已经有一段时间没有调整项目构建设置了。升级到最新的SDK后,我在构建即席分发配置时遇到问题。

    生成生成此警告和错误:

    警告:iPhone应用程序应包括ARMV6架构(当前 archs=“armv7”)

    iPhone/iPod touch:应用程序可执行文件缺少必需的 架构。必须至少有以下架构之一 存在:ARMV6(-19033)

    但是在我的项目中,我认为我的设置是正确的:

    • 体系结构是:标准(ARMV6 ARMV7)
    • 基本SDK:最新的iOS(当前设置为iOS 4.2)
    • 有效架构:ARMV6 ARMV7

    alt text

    我已经清理了所有目标。

    我很感激任何小费。

    17 回复  |  直到 14 年前
        1
  •  417
  •   Community CDub    8 年前

    如果使用xcode 4.2或更高版本,请尝试以下操作:

    1. 单击项目名称(在左列),然后单击目标:

      enter image description here

    2. 单击“生成设置”选项卡(在右列中):

      enter image description here

    3. 单击“架构”下的“发布”或“分发”行,然后选择“其他…”

      enter image description here

    4. 双击弹出窗口中名为“$(archs_standard_32_bit)”的突出显示行,然后键入“armv6”将其替换。然后在弹出窗口的左下角添加一个带有加号按钮的新行,并键入“armv7”,然后单击“完成”:

      enter image description here

    更新:你也应该在iPhone5上添加armv7s。(如果使用xcode 4.5或更高版本的建筑,并且不再支持armv6,则删除armv6。)

    就这样。您现在应该能够构建/归档而不产生错误。

    如果它仍然不起作用,看 this answer from justinxreese 建议在info.plist文件的“所需设备功能”下添加armv6和armv7的条目。

        2
  •  62
  •   Brian    13 年前

    如果取消选中“仅构建活动体系结构”,那么它将构建所有有效的体系结构。

    更新 :这不再适用于Xcode 4-请遵循Nick对Xcode 4及更高版本的说明。

        3
  •  59
  •   justinxreese    13 年前

    我有这个问题,即使在遵循公认的答案,并发现以下工作:

    在info.plist中,添加所需设备功能的条目。这应该是一个数组,并且有两个条目。

    • 项目0:ARMV6
    • 项目1:ARMV7

    它看起来像这样:

    Required device capabilities entry

        4
  •  26
  •   MattyG    13 年前

    除了尼克对xcode 4.2的回答之外,您还可能需要查看info.plist文件。在Xcode4.2中启动的新项目默认情况下,在“所需设备功能”中指定“armv7”。如果想要支持运行ARMV6(如iPhone3G)的设备,则需要删除此项功能。

    enter image description here

    从项目名称-info.plist中的“所需设备功能”中删除armv7

        5
  •  21
  •   Animesh    12 年前

    iOS 6更新

    iOS 6 Xcode 4.5.x中的更改

    1. Xcode4.5.x(及更高版本)不支持生成ARMV6二进制文件。
    2. 现在包括iPhone 5/ARMV7S支持。
    3. Xcode 4.5.x或更高版本支持的最低部署目标是iOS 4.3。
        6
  •  6
  •   Tom Kincaid    12 年前

    我也有这个问题。我刚把我的部署目标设置为4.3,只留下了ARMV7体系结构,它起作用了。在这一点上,几乎每个人都有5个,所以4.3是好的。

        7
  •  3
  •   mr.octobor    13 年前

    对我来说,这并不适用于所有的答案。但我尝试使用targets>architectures>debug,并使用加号按钮添加新行,然后键入“armv6”(with out),然后单击“完成”。

    最后单击Cmd+B,然后右键单击prprojectname.app(在products文件夹中)>在finder中打开>压缩“project_name.app”(在debug iphoneos中)>上载到appstore

    enter image description here

    这是我的屏幕设置。 enter image description here

    如果您有include项目,请全部配置。 希望你的帮助。

        8
  •  3
  •   Louie    13 年前

    在尝试了这些答案的混合之后,我终于偶然发现了如何使它起作用。我现在对苹果很生气。他们又浪费了我一个小时。这是我的配置。

    enter image description here

        9
  •  2
  •   mbo    13 年前

    我试过上面所有的答案,没有一个能解决我的问题。因此,我创建了一个新项目,并逐个比较构建设置。只有“备用权限文件”不同。 项目生成失败的值为armv7。删除它,然后清除->生成->存档。成功! 希望能解决你的问题

        10
  •  2
  •   Brent    13 年前

    哇,我大约每6个月更新/提交一次应用程序。每次我这样做,我都要学习“新”的方法去做…

    运行iOS 5.1和xcode 4.3.2时出现的问题与上述相同

    谢谢你的帖子!我花了一段时间将所有项目设置更新为armv6、armv7,但没有任何乐趣。当我将“build active architecture only”设置为“no”时,在将两个对象放在同一目录中时出现了生成错误。

    幸运的是,我注意到你们正在修改目标构建设置。这是最终工作的(armv6、armv7,并在目标构建设置下将“仅构建活动架构”设置为否)。作为免责声明,我已经在项目设置中将所有架构设置为armv6和armv7。

    不管怎样,谢谢你的帮助, 布伦特

        11
  •  2
  •   pwbrewer    13 年前

    我必须确保在Xcode 4.3.2上的目标和项目设置中更改这些设置,然后在我提交应用程序的任何地方将其设置为为为ARMV6和ARMV7构建。

    为了安全起见,我还退出了xcode,在进行更改和执行一个干净的、构建的、归档的循环之间。

        12
  •  0
  •   dijipiji    13 年前

    对我来说也是一个很痛苦的问题。只是花了大约一个小时来尝试建造和重建——没有快乐。最后我不得不这样做:

    1. 将基本SDK升级到最新版本(在我的情况下是iOS 5)
    2. 重新启动xcode
    3. 清理和生成
    4. 成功了!

    我猜这是一堆关于arm6,arm7的行话,因为看起来我的项目对两者都是有效的,至少设置看起来是这样的),我猜这是一种玩世不恭的方法,用我们不理解的技术性欺骗我们,所以我们只是简单地选择并瞄准最新的IO。S(对苹果有好处,因为有更多的人是最新的)。

        13
  •  0
  •   Rolf Staflin CommonsWare    13 年前

    以下是苹果的文档:

    Technical Q&A QA1760

    它说有两件事你必须改正:

    1. 添加 armv6 到架构构建设置
    2. 仅将生成活动体系结构设置为 No .

    如果这仍然对您没有帮助,请再次检查您是否真的在为正确的构建配置更改架构构建设置,我浪费了半个小时的时间来处理错误的配置,并想知道为什么它不起作用…

    选择 Edit Scheme... 在产品菜单中,单击左侧列表中的“存档”方案并检查生成配置。如果值不是您期望的值,请更改该值。

        14
  •  0
  •   James Perih    12 年前

    注意:我必须为我的基本项目和应用程序中嵌入的phonegap.xcodeproj文件执行这些步骤。

    是的,我嵌入了phonegap;它们更新得非常频繁,而且我还不到两个月就知道某个特性被贬低了。

        15
  •  0
  •   zachjs    12 年前

    尝试将部署目标更改为比ARMV6处理器更高的处理器。xcode的设置引用操作系统级别,例如:iOS版本3.1、3.2、4.0、4.1、4.2、4.3、5.0、5.1

    (i)可以在“生成设置”选项卡或“摘要”选项卡中进行设置。从项目导航器窗口的左上角开始,其中列出了所有文件。单击顶部的蓝色图标。

    (i i)如果您计划使用可编程着色线电路,它是通过OpenGL ES 2.0 API访问和控制的,那么您应该将“部署版本”设置为大约4.3,我相信它只在3GS或更新版本的设备上可用。Xcode报告需要iOS 4.2.5或更高版本,运行armv7代码。我相信,这款处理器又一次是从3GS开始的。*目前,iOS 4.3似乎是我的选择。

    http://theiphonewiki.com/wiki/index.php?title=Armv7

    http://en.wikipedia.org/wiki/List_of_iOS_devices

        16
  •  0
  •   refaelio    12 年前

    如果Xcode一直抱怨ARMV7,请确保断开任何连接设备(尤其是iPhone5!!)然后再试一次。我花了好几个小时才发现那一点信息。

        17
  •  0
  •   MAhipal Singh mdsmdsdsu    7 年前

    在雪豹上使用xcode 4.2,我使用以下设置构建了一个既适用于ARMV6(iPhone3G和更低版本)又适用于ARMV7(所有比3G更新的应用,包括3GS)的应用程序。

    架构:ARMV6和ARMV7(已删除$(archs_standard_32_bit))
    仅生成活动体系结构:否
    所需设备功能: ARMv6

    如果你想让armv7在3G和更低版本上运行,就不要把它放在所需的设备功能中。