ChatGPT解决这个技术问题 Extra ChatGPT

“警告:iPhone 应用程序应包含 armv6 架构”,即使有构建配置集

自从我不得不调整项目构建设置以来已经有一段时间了。升级到最近的 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

我已经清理了所有目标。

我很感激任何提示。

我的是一个得到更新的旧应用程序,它也为 iOS 部署目标 < 4.3 引发了同样的错误!所以我的解决方案是删除所有对 armv6 的引用并将其设置为 >=4.3。有效。
刚才我对另一个旧应用程序进行了同样的尝试,但它没有工作...... XCode 5 问题,它似乎误读了构建设置。

C
Community

如果使用 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 的条目。


是的,看起来苹果正在远离 ARM6,所以这似乎是 Xcode 4.2 的必要步骤。奇怪的是,提交过程仍然需要ARM6构建,即使4.2现在是公开的......
我没有架构下的分发行,而是我有“发布”行。不知道怎么做
@Let'sSpotIt 只需将 armv6 和 armv7 添加到您的 Release 行。我截图中的项目是从早期版本的 Xcode 导入的,因此架构名称不同。
谢谢尼克。此外,在 Xcode 4.2 中创建的新项目可能需要更改其 info.plist 文件以支持 armv6 设备。请参阅下面的我的附加答案。
@Nick 感谢您的提示,对我来说,我必须选择“项目”而不是“目标”。从“目标”构建设置中选择对我不起作用。无论如何,再次感谢您的帮助。
B
Brian

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

更新:这不再适用于 Xcode 4 - 按照 Nick 对 Xcode 4 及更高版本的说明进行操作。


您可以通过将 Debug 构建设置为 YES 并将 Release 构建设置为 No 来加快构建时间。
j
justinxreese

即使在遵循接受的答案并发现以下工作后,我也遇到了这个问题:

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

项目 0:armv6

第 1 项:armv7

它看起来像这样:

https://i.stack.imgur.com/LFRUB.png


该解决方案修复了我的其他架构警告,但我仍然收到最初的警告,并且我还将“仅构建活动架构”设置为“否”
为我修复了它,因为以前的解决方案不适用。出于某种原因,armv6 不再显示在我的构建架构设置下:S
这与上面尼克的回答一起为我修复了它。 +1
您应该在最新的 xCode 版本中完全删除此选项,然后它将编译。当您同时放置两者时,这将需要两个架构在您的设备中都有效,这实际上是不可能的
要使用 XCode 4.5+ 进行构建,您必须从所需的设备功能中删除 armv6。
M
MattyG

除了 Nick 对 Xcode 4.2 的回答之外,您可能还需要查看 info.plist 文件。似乎在 Xcode 4.2 中启动的新项目默认在“必需设备功能”中指定“armv7”。如果想要支持运行 armv6 的设备(例如 iPhone 3G),您需要删除它。

https://i.stack.imgur.com/Wpgif.png

从 yourProjectName-Info.plist 中的“所需设备功能”中删除 armv7


A
Animesh

iOS 6 更新

ios 6 的 Xcode 4.5.x 更改

Xcode 4.5.x(及更高版本)不支持生成 armv6 二进制文件。现在包括 iPhone 5/armv7s 支持。 Xcode 4.5.x 或更高版本支持的最低部署目标是 iOS 4.3。


T
Tom Kincaid

我也有这个问题。我只是将我的部署目标设置为 4.3,只留下 armv7 架构,它就可以工作了。在这一点上几乎每个人都有 5,所以 4.3 很好。


m
mr.octobor

对我来说,它不适用于每个答案。但我尝试 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

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


我还必须在发布架构上设置 armv6 才能工作。
L
Louie

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

https://i.stack.imgur.com/ROAjH.png


m
mbo

我尝试了上面所有的答案,没有一个解决我的问题。所以我创建了一个新项目并一一区分构建设置。只有“备用权限文件”不同。项目构建失败的值为 armv7。删除它然后 clean->build->archive 。成功!希望能解决你的问题


B
Brent

哇,我大约每 6 个月更新/提交应用程序。每次我这样做时,我都必须学习“新”的方法......

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

感谢您的帖子!我花了一段时间将所有项目设置更新为 armv6、armv7,但没有任何乐趣。当我将“仅构建活动架构”设置为“否”时,我收到一个关于将两个对象放在同一目录中的构建错误。

幸运的是,我注意到你们正在修改目标构建设置。这就是最终奏效的方法(armv6、armv7,并在 Target build Settings 下将“build active architecture only”设置为 No)。作为免责声明,我已经在项目设置中将所有架构设置为 armv6、armv7。

无论如何,谢谢你的帮助,布伦特


p
pwbrewer

在这样做之后,我必须确保在 xCode 4.3.2 上的 Target 和 Project 设置中更改这些设置,并将其设置为在我能够提交我的应用程序的任何地方为 armv6 和 armv7 构建。

为了安全起见,我还在进行更改和执行干净、构建、归档周期之间退出了 xCode。


d
dijipiji

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

将基本 SDK 升级到最新版本(在我的情况下为 iOS 5)重新启动 xCode Clean & Build 它工作!

我猜这是一堆关于 arm6 , arm7 的行话,因为看起来我的项目对两者都有效,至少设置似乎是这样说的'不明白,所以我们只是采取简单的选择并针对最新的iOS(对Apple有好处,有更多的人是最新的)......


R
Rolf Staflin

这是苹果的文档:

Technical Q&A QA1760

它说有两件事你必须做对:

将 armv6 添加到体系结构构建设置中 将仅构建活动体系结构设置为否。

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

在 Product 菜单中选择 Edit Scheme...,单击左侧列表中的“Archive”方案并检查 Build Configuration。如果它不是您所期望的,请更改该值。


J
James Perih

笔记;我必须为我的基础项目和应用程序中嵌入的 PhoneGap .xcodeproj 文件执行这些步骤。

是的,我嵌入了PhoneGap;它们更新得非常频繁,而且我只有不到两个月的时间才能知道某个功能已贬值。


z
zachjs

尝试将您的部署目标更改为高于 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


r
refaelio

如果 xCode 一直抱怨 armv7,请确保断开所有连接设备(尤其是 iPhone 5 !!)并重试。我花了几个小时才找到那条小信息。


M
MAhipal Singh

在 Snow Leopard 上使用 Xcode 4.2,我使用以下设置构建了一个适用于 armv6(Iphone 3G 及更低版本)和 armv7(包括 3GS 在内的所有高于 3G 的设备)的应用程序。

架构:armv6 和 armv7(已删除 $(ARCHS_STANDARD_32_BIT))仅构建活动架构:不需要设备功能:armv6

如果您希望应用程序在 3G 或更低的网络上运行,请不要将 armv7 置于所需的设备功能中。


这是唯一对我有用的东西。在 iphone4、iphone3g、ipad1、ipad2 上进行测试。读到我必须将 armv6 和 armv7 放入所需的设备功能中,但是一旦我放入 armv7,该应用程序就不会在 iphone3g 上上传/运行
将 armv7 条目留在“必需的设备功能”中会使 Xcode 禁止我在 iPhone 3G 上运行。