iPhone/iPod Touch:应用程序可执行文件缺少所需的架构。

34

我在使用xCode 4.2时遇到了问题。编译时出现以下错误:

2011-06-18 13:35:49.839 Validation[4110:607] *** Warning: Defaulting to the standard codesign tool
warning: iPhone/iPod Touch: application executable is missing a required architecture.  At least one of the following architecture(s) must be present: armv6 (-19033)
Unable to validate your application. - (null)

我查看了我的项目设置,发现它有:

architectures: Standard (arm7) - ${ARCHS_STANDARD_32_BIT)
Build active architecture only : NO

不确定是什么意思


使用我下面给出的答案可能会解决你的问题...?即使按照接受的答案进行操作,我仍然遇到了这个问题,并找到了以下解决方法:在你的Info.plist文件中,添加一个Required Device Capabilities的条目。这应该是一个数组,并且有两个条目。条目 0: armv6 条目 1: armv7它将看起来像这样:Required device capabilities entry - Himanshu Agnihotri
@Himnanshu,你的解决方案对我没用。Barak的可以... - Ross
请查看此链接:http://developer.apple.com/library/ios/#qa/qa1760/_index.html 对我很有用。 Larry - user552923
10个回答

75

由于某些原因,xCode 4.2 的默认架构设置仅适用于 armv7。

前往目标 -> 构建设置 -> 架构 -> 发行版

在“值”下拉菜单中选择“其他…”,

删除 $(ARCHS_STANDARD_32_BIT),并添加 2 行。 第一行写上 "armv6",第二行写上 "armv7"。
完成。


太棒了...这个问题一直困扰着我。它实际上阻止了我的应用在iPhone 3G(例如iOS 4.2)上部署。做了这个改变,现在完全可以工作了!谢谢! - Simeon G
1
注意:在某些情况下,删除旧设置可能无效。只需添加“armv6”即可解决问题,最终结果显示架构:“armv6 $(ARCHS_STANDARD_32_BIT)”。 - brack
易于理解。感谢您节省时间。 - f0rz
尝试了这个更改,但没有效果。不得不像SK9的答案一样将部署目标更改为4.3(原来是3.2),这起作用了。很遗憾,因为现在旧的iPod Touch将不再受支持。 - Andrew

38

针对Xcode 4.5,将部署目标设置至少为iOS 4.3即可解决此问题。早期版本的iOS已经几乎绝迹。


感谢大家。按照正确的方式发布iPhone应用程序真是太麻烦了。先让它适配更大的屏幕,然后再正确旋转,最后让应用程序加载器以最少的提示将其加载。我认为iOS 4.3的变化是关键。 - Gerry
这对我也有效。我的版本设置为4.0,但需要最低4.3配合6.1版的SDK。谢谢! - DevCompany

7

虽然不是最优解,但我发现将部署目标更改为4.3(之前是4.0)可以消除错误。


谢谢,经过几天的努力,现在我可以提交应用程序了! - AVEbrahimi
我认为这将限制您的应用程序仅适用于iOS版本4.3及以上。顺便说一句,现在不应该再那么重要了。只是提供信息。 - Kyle Clegg
armv7设备只能运行iOS 4.3及以上版本,这也是为什么这个可以工作的原因之一,但是它不会在已更新到iOS 4.3及以上版本的带有armv6处理器的旧设备上运行。如果您不想支持旧设备,则没有关系。如果您想支持旧设备,则需要遵循Barak上面提供的解决方案。 - jsherk

6

对于XCode 4.5

必须将“部署目标”设置为4.3,“架构”设置为armv6 armv7 armv7s,并且像上面描述的那样将“仅构建活动架构”设置为No

在升级到XCode 4.5之前,该项目一直正常工作数个月。


1
注意:如果您希望在应用程序中放弃ARM v6支持,请将iOS部署目标设置为4.3或更高版本。运行iOS 4.2.1之后的版本需要ARM v7处理器。

0

我在使用Xcode 4.2版本时也遇到了完全相同的问题,并且还出现了另一个错误:

There is no codesign:wrapper executable. Please reinstall the Xcode developer tools.

将Xcode降级到旧版本后,问题得到解决。


0

我的上一个回答被管理员删除了,因为我没有遵守他们的规定。所以,我再次回答。

我也遇到了同样的问题,浪费了两天时间。在我的情况下,升级到XCode导致了这个问题。我将XCode降级到了之前的版本,问题就解决了。如果这是你的问题,那么卸载新版本,重新启动,然后再安装旧版本即可。

我还在我的博客中添加了一些关于这个问题的截图和信息:http://iostipsntricks.wordpress.com/2011/06/24/solved-application-executable-is-missing-a-required-architecture-at-least-one-of-the-following-architectures-must-be-present-armv6/


0

遇到了同样的问题,尝试了这里提到的所有方法 - 但在验证时仍然出现错误 - 我尝试了armv6和armv7步骤,并尝试将其添加到info.plist中,并为分发证书重新生成了它们,以防万一。

结果发现,info.plist文件必须在相应字段中具有${EXECUTABLE_NAME}${PRODUCT_NAME} 此外,该方案+目标的构建设置中的产品名称应与方案名称相匹配 我确保所有名称完全匹配 EXECUTABLE_NAME、PRODUCT_NAME、 Target 中的产品名称、构建设置和info plist中的二进制名称以及可部署的二进制名称-确保它们与目标名称本身匹配

一旦所有名称都匹配并且架构匹配,就可以工作了。 在那之前,它一直在给我验证错误。


0

0

我的答案可能可以解决你的问题: 即使按照已接受的答案,我仍然遇到了这个问题,并发现以下方法可行:

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

Item 0 : armv6
Item 1 : armv7

它将看起来像这样:

所需设备功能条目


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接