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


332

自从我不得不调整项目构建设置以来已经有一段时间了。升级到最新的SDK之后,我无法建立临时分发配置。

生成会生成以下警告和错误:

警告:iPhone应用程序应包含armv6架构(当前ARCHS =“ armv7”)

iPhone / iPod Touch:应用程序可执行文件缺少必需的体系结构。至少必须存在以下一种或多种体系结构:armv6(-19033)

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

  • 架构是:标准(armv6 armv7)
  • 基本SDK:最新的iOS(当前设置为iOS 4.2)
  • 有效架构:armv6 armv7

替代文字

我已经清理了所有目标。

我感谢任何提示。


我的是一个有更新的旧应用程序,它对iOS部署目标<4.3也引发相同的错误!所以我的解决方案是删除所有对armv6的引用,并将其设置为> = 4.3。有效。
Henrik Erlandsson

而现在,我为另一个经过修复的旧应用程序尝试了相同的操作,但它不起作用... XCode 5问题,它似乎误读了“构建设置”。
亨里克·埃兰森

Answers:


418

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

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

    在此处输入图片说明

  2. 点击“构建设置”标签(在右列中):

    在此处输入图片说明

  3. 单击“体系结构”下的“发布”或“发行”行,然后选择“其他...”:

    在此处输入图片说明

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

    在此处输入图片说明

更新:您还应该添加armv7来定位iPhone 5。(如果使用Xcode 4.5或更高版本进行构建,则删除armv6,后者不再支持armv6。)

而已。现在,您应该能够构建/归档而不会产生错误。

如果仍然无法解决问题,请参阅justinxreese的回答,该建议建议在info.plist文件的“必需的设备功能”下添加armv6和armv7的条目。


3
是的,看起来苹果公司正在远离ARM6,因此这似乎是Xcode 4.2的必要步骤。奇怪的是,即使4.2现在已经公开,提交过程仍然需要ARM6构建……
Jasarien 2011年

7
我没有体系结构下的分发行,而是有“发布”行。不知道该怎么做
OMGPOP,2011年

2
@ Let'sSpotIt只需将armv6和armv7添加到您的Release行。屏幕快照中的项目是从早期版本的Xcode导入的,因此使用了不同的体系结构名称。
尼克,

2
谢谢尼克。另外,在Xcode 4.2中创建的新项目可能需要更改其info.plist文件以支持armv6设备。请参阅下面的其他答案。
MattyG

1
@尼克感谢您的提示,对我来说,我不得不选择“项目”而不是“目标”。从“目标”构建设置中选择对我不起作用。无论如何,再次感谢您的帮助。
Prasad De Zoysa

62

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

更新:从Xcode 4开始,这不再适用-请按照Nick关于Xcode 4及更高版本的说明进行操作。


11
通过将Debug版本设置为YES,将Release版本设置为No,可以加快构建时间。
比利·格雷

59

即使遵循可接受的答案,我仍然遇到此问题,并发现以下方法可以工作:

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

  • 物品0:armv6
  • 物品1:armv7

它看起来像这样:

所需的设备功能条目


此解决方案修复了我的其他体系结构警告,但仍然得到了最初的警告,并且我还将“仅构建活动体系结构”设置为“否”
Dan F

为我修复了此问题,因为以前的解决方案不适用。由于某些原因,armv6在我的构建体系结构设置下不再显示:S
seeafish

这与上面尼克的答案一起为我解决了。+1
Saurabh Wadhwa

您应该在最新的xCode版本中完全删除此选项,然后它将进行编译。当您同时使用这两种架构时,将要求两种架构都在您的设备中有效,这几乎是不可能的
Artem 2012年

为了使用XCode 4.5+进行构建,您将不得不从所需的设备功能中删除armv6。
Pulkit Goyal '11

26

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

在此处输入图片说明

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


21

iOS 6更新

Xcode 4.5.x for iOS 6的更改

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

6

我也有这个问题。我只是将部署目标设置为4.3,而只保留了armv7架构,它可以正常工作。此时几乎每个人都有5,所以4.3很好。


3

对我来说,它不能解决所有问题。但是我尝试TARGETS> Architectures> Debug并使用加号按钮添加新行,然后键入'armv6'(不带'),然后单击Done。

最后是CMD + B,然后右键单击PrjectName.app(在Products文件夹中)>在Finder中打开>压缩“ PROJECT_NAME.APP”(在Debug-iphoneos中)>上传到AppStore

在此处输入图片说明

这是我的屏幕设置。 在此处输入图片说明

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


1
我还必须在发布架构上设置armv6才能起作用。
mph

3

在尝试了这些答案的混合之后,我最终迷失了方向。我现在很讨厌苹果。再过一个小时,他们就让我浪费了。这是我的配置。

在此处输入图片说明


2

我尝试了上述所有答案,但没有一个解决了我的问题。因此,我创建了一个新项目,并逐一比较了构建设置。仅“备用权限文件”不同。项目构建失败,具有值armv7。删除它,然后clean-> build-> archive。成功!希望可以解决您的问题


2

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

运行iOS 5.1和Xcode 4.3.2时,与上述问题相同

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

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

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


2

执行完此操作后,必须确保在xCode 4.3.2的Target和Project设置中都更改了这些设置,并将其设置为在我能够提交我的应用程序的任何地方都为armv6和armv7构建。

为了安全起见,我还退出了xCode,在进行更改与执行清理,构建,归档周期之间。


0

我也很痛苦。仅仅花了大约一个小时来尝试进行构建和重新构建-没什么好高兴的。最后,我必须这样做:

  1. 将基本SDK升级到最新版本(在我的情况下为iOS 5)
  2. 重新启动xCode
  3. 清洁与建造
  4. 有效!

我猜这是关于arm6和arm7的一堆行话,因为看起来我的项目对这两个都是有效的,至少设置似乎是这样的),我的猜测是这是一种愤世嫉俗的方式来骗我们了解技术不知道,所以我们只是选择简单的选项并针对最新的iOS(对苹果公司有利,因为有更多的人处于最新状态)...。


0

这是Apple的文档:

技术问答QA1760

它说您必须正确做两件事:

  1. armv6到架构构建设置
  2. 将“仅将构建活动体系结构”设置为No

如果仍然不能解决问题,请再次检查您是否确实在为正确的构建配置更改体系结构构建设置–我浪费了半个小时来摆弄错误的配置,并想知道为什么它不起作用...

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


0

注意; 我必须对我的基础项目以及应用程序中嵌入的PhoneGap .xcodeproj文件都执行这些步骤。

是的,我嵌入了PhoneGap;它们经常更新,因此我不到两个月的时间就知道该功能已过时。


0

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

(i)您可以在构建设置选项卡或摘要选项卡中进行设置。从“项目浏览器”窗口的左上角开始,列出所有文件。单击最上方的带有蓝色图标的图标。

(ii)如果您打算使用可通过openGL ES 2.0 API访问和控制的可编程着色器线电路,则应将“部署版本”设置为约4.3,我相信仅在诸如3GS或更高版本。xCode报告需要运行armv7代码的iOS 4.2.5或更高版本。我相信,该处理器再一次从3GS开始。* iOS 4.3似乎是我目前的选择。

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

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


0

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


0

我在Snow Leopard上使用Xcode 4.2,使用以下设置来构建可在armv6(Iphone 3G及更低版本的iPhone)和armv7(包括3GS的所有比3G更高的版本)上均可使用的应用程序。

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

如果您希望该应用程序在3G及更低版本上运行,请不要将armv7置于必需的设备功能中。


1
这是唯一对我有用的东西。在iphone4,iphone3g,ipad1,ipad2上进行测试。阅读我只好把ARMv6及中所需的设备能力的ARMv7,但只要我把ARMv7的,该应用程序将在iPhone3G的不上传/运行
noromamai

将armv7条目留在“必需的设备功能”中,使Xcode禁止我在iPhone 3G上运行。
tinsukE 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.