自从我不得不调整项目构建设置以来已经有一段时间了。升级到最近的 SDK 后,我在构建临时分发配置时遇到了问题。
构建生成此警告和错误:
警告:iPhone 应用程序应包含 armv6 架构(当前 ARCHS = "armv7") iPhone/iPod Touch:应用程序可执行文件缺少所需的架构。必须至少存在以下架构之一:armv6 (-19033)
但是在我的项目中,我认为我的设置正确:
架构是:标准(armv6 armv7)
基础 SDK:最新 iOS(当前设置为 iOS 4.2)
有效架构:armv6 armv7
https://i.stack.imgur.com/4XhKI.png
我已经清理了所有目标。
我很感激任何提示。
如果使用 Xcode 4.2 或更高版本,请尝试以下操作:
单击您的项目名称(在左列中),然后单击目标:单击“构建设置”选项卡(在右列中):单击“架构”下的“发布”或“分发”行,然后选择“其他”。 ..':在出现的弹出窗口中双击突出显示的名为“$(ARCHS_STANDARD_32_BIT)”的行,然后输入“armv6”替换它。然后在弹出框左下角使用加号按钮添加一个新行,然后键入“armv7”,然后单击完成:
更新:您也应该添加 armv7s 以针对 iPhone 5。 (如果使用不再支持 armv6 的 Xcode 4.5 或更高版本构建,则删除 armv6。)
而已。您现在应该能够构建/归档而不会产生错误。
如果它仍然不起作用,请参阅 this answer from justinxreese,它建议在 info.plist 文件的“必需的设备功能”下添加 armv6 和 armv7 的条目。
如果您取消选中“仅构建活动架构”,那么它将构建所有有效的架构。
更新:这不再适用于 Xcode 4 - 按照 Nick 对 Xcode 4 及更高版本的说明进行操作。
即使在遵循接受的答案并发现以下工作后,我也遇到了这个问题:
在您的 Info.plist 中,为所需的设备功能添加一个条目。这应该是一个数组,并且有两个条目。
项目 0:armv6
第 1 项:armv7
它看起来像这样:
https://i.stack.imgur.com/LFRUB.png
除了 Nick 对 Xcode 4.2 的回答之外,您可能还需要查看 info.plist 文件。似乎在 Xcode 4.2 中启动的新项目默认在“必需设备功能”中指定“armv7”。如果想要支持运行 armv6 的设备(例如 iPhone 3G),您需要删除它。
https://i.stack.imgur.com/Wpgif.png
从 yourProjectName-Info.plist 中的“所需设备功能”中删除 armv7
iOS 6 更新
ios 6 的 Xcode 4.5.x 更改
Xcode 4.5.x(及更高版本)不支持生成 armv6 二进制文件。现在包括 iPhone 5/armv7s 支持。 Xcode 4.5.x 或更高版本支持的最低部署目标是 iOS 4.3。
我也有这个问题。我只是将我的部署目标设置为 4.3,只留下 armv7 架构,它就可以工作了。在这一点上几乎每个人都有 5,所以 4.3 很好。
对我来说,它不适用于每个答案。但我尝试 TARGETS > Architectures > Debug 并使用加号按钮添加一个新行,然后键入“armv6”(没有“),然后单击完成。
最后 CMD+B 然后右键单击 PrjectName.app(在 Products 文件夹中)> 在 Finder 中打开 > 压缩“PROJECT_NAME.APP”(在 Debug-iphoneos 中)> 上传到 AppStore
https://i.stack.imgur.com/CJw1I.png
https://i.stack.imgur.com/L1Q2Y.png
如果您有包含项目,请全部配置。希望你的帮助。
在尝试了这些答案的混合之后,我终于偶然发现了它的工作原理。我现在对苹果很生气。他们又让我浪费了一个小时。这是我的配置。
https://i.stack.imgur.com/ROAjH.png
我尝试了上面所有的答案,没有一个解决我的问题。所以我创建了一个新项目并一一区分构建设置。只有“备用权限文件”不同。项目构建失败的值为 armv7。删除它然后 clean->build->archive 。成功!希望能解决你的问题
哇,我大约每 6 个月更新/提交应用程序。每次我这样做时,我都必须学习“新”的方法......
运行 iOS 5.1 和 Xcode 4.3.2 时出现与上述相同的问题
感谢您的帖子!我花了一段时间将所有项目设置更新为 armv6、armv7,但没有任何乐趣。当我将“仅构建活动架构”设置为“否”时,我收到一个关于将两个对象放在同一目录中的构建错误。
幸运的是,我注意到你们正在修改目标构建设置。这就是最终奏效的方法(armv6、armv7,并在 Target build Settings 下将“build active architecture only”设置为 No)。作为免责声明,我已经在项目设置中将所有架构设置为 armv6、armv7。
无论如何,谢谢你的帮助,布伦特
在这样做之后,我必须确保在 xCode 4.3.2 上的 Target 和 Project 设置中更改这些设置,并将其设置为在我能够提交我的应用程序的任何地方为 armv6 和 armv7 构建。
为了安全起见,我还在进行更改和执行干净、构建、归档周期之间退出了 xCode。
对我来说也是一个相当痛苦的问题。只花了大约一个小时试图建造和重建 - 没有乐趣。最后我不得不这样做:
将基本 SDK 升级到最新版本(在我的情况下为 iOS 5)重新启动 xCode Clean & Build 它工作!
我猜这是一堆关于 arm6 , arm7 的行话,因为看起来我的项目对两者都有效,至少设置似乎是这样说的'不明白,所以我们只是采取简单的选择并针对最新的iOS(对Apple有好处,有更多的人是最新的)......
这是苹果的文档:
它说有两件事你必须做对:
将 armv6 添加到体系结构构建设置中 将仅构建活动体系结构设置为否。
如果这仍然对您没有帮助,请仔细检查您是否真的在为正确的构建配置更改架构构建设置——我浪费了半个小时来摆弄错误的配置,并想知道为什么它不起作用......
在 Product 菜单中选择 Edit Scheme...
,单击左侧列表中的“Archive”方案并检查 Build Configuration。如果它不是您所期望的,请更改该值。
笔记;我必须为我的基础项目和应用程序中嵌入的 PhoneGap .xcodeproj 文件执行这些步骤。
是的,我嵌入了PhoneGap;它们更新得非常频繁,而且我只有不到两个月的时间才能知道某个功能已贬值。
尝试将您的部署目标更改为高于 armv6 处理器的目标。 xCode 的设置参考操作系统级别,例如:iOS version#{3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}
(i)您可以在构建设置选项卡或摘要选项卡中进行设置。从 Project Navigator 窗口的左上角开始,其中列出了所有文件。单击具有蓝色图标的最顶部的那个。
(ii) 如果您计划使用通过 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
如果 xCode 一直抱怨 armv7,请确保断开所有连接设备(尤其是 iPhone 5 !!)并重试。我花了几个小时才找到那条小信息。
在 Snow Leopard 上使用 Xcode 4.2,我使用以下设置构建了一个适用于 armv6(Iphone 3G 及更低版本)和 armv7(包括 3GS 在内的所有高于 3G 的设备)的应用程序。
架构:armv6 和 armv7(已删除 $(ARCHS_STANDARD_32_BIT))仅构建活动架构:不需要设备功能:armv6
如果您希望应用程序在 3G 或更低的网络上运行,请不要将 armv7 置于所需的设备功能中。