因为我不得不调整项目构建设置已经有一段时间了。升级到最近的SDK后,我无法构建我的ad hoc分发配置。
Build会生成此警告和错误:
警告:iPhone应用程序应该包含armv6架构(当前 ARCHS =“armv7”)
iPhone / iPod Touch:缺少必需的应用程序可执行文件 建筑。必须至少有以下架构之一 现在:armv6(-19033)
然而,在我的项目中,我认为我的设置正确:
我清理了所有目标。
我感谢任何提示。
答案 0 :(得分:417)
如果使用Xcode 4.2或更高版本,请尝试以下操作:
单击您的项目名称(在左栏中),然后单击目标:
点击“构建设置”标签(右栏):
点击“架构”下的“发布”或“分发”行,然后选择“其他...”:
在出现的弹出窗口中双击名为“$(ARCHS_STANDARD_32_BIT)”的突出显示的行,然后键入“armv6”进行替换。然后使用弹出框左下角的加号按钮添加一个新行,并键入“armv7”,然后单击“完成”:
更新:你应该添加armv7s来定位iPhone 5。 (如果使用Xcode 4.5或更高版本构建,则放下armv6,不再支持armv6。)
就是这样。您现在应该能够构建/存档而不会产生错误。
如果仍然无效,请参阅this answer from justinxreese,其中建议在info.plist文件中的“必需的设备功能”下添加armv6和armv7的条目。
答案 1 :(得分:62)
如果取消选中“仅构建活动体系结构”,则它将构建所有有效体系结构。
更新:从Xcode 4开始不再适用 - 请遵循Nick关于Xcode 4及更高版本的说明。
答案 2 :(得分:59)
即使按照接受的答案后我也遇到了这个问题,并发现以下情况:
在Info.plist中,添加必需设备功能的条目。这应该是一个数组,将有两个条目。
看起来像这样:
答案 3 :(得分:26)
除了Nick关于Xcode 4.2的回答,您可能还需要查看info.plist文件。似乎默认情况下在Xcode 4.2中启动的新项目在“必需的设备功能”中指定了“armv7”。如果想要支持运行armv6的设备(例如iPhone 3G),则需要删除它。
从您的ProjectName-Info.plist
中的'Required device capabilities'中删除armv7答案 4 :(得分:21)
ios 6更新
ios 6的Xcode 4.5.x中的更改
答案 5 :(得分:6)
我也有这个问题。我只是将我的部署目标设置为4.3并且只保留了armv7体系结构并且它工作正常。几乎每个人都有5个,所以4.3很好。
答案 6 :(得分:3)
对我而言,它不适用于每个答案。但我尝试了TARGETS>架构>使用加号按钮调试并添加一个新行,并键入“armv6”(带有“)”,然后单击“完成”。
最后是CMD + B,然后右键单击PrjectName.app(在Products文件夹中)>在Finder中打开>压缩“PROJECT_NAME.APP”(在Debug-iphoneos中)>上传到AppStore
这是我的屏幕设置。
如果你有包含项目,请配置一切。 希望你的帮助。
答案 7 :(得分:3)
在尝试了这些答案的混合之后,我终于偶然发现了它的工作原理。我现在对Apple很生气。再过一个小时他们就让我浪费了。这是我的配置。
答案 8 :(得分:2)
我尝试了上面的所有答案,没有人解决我的问题。所以我创建了一个新项目并逐个区分构建设置。只有“备用权限文件”是不同的。 项目构建失败具有值armv7。删除它然后清理 - > build->存档。成功! 希望能解决你的问题
答案 9 :(得分:2)
运行iOS 5.1和Xcode 4.3.2时,与上述问题相同。
感谢帖子!我花了一段时间将所有项目设置更新到armv6,armv7,但没有快乐。当我将“仅构建活动体系结构”设置为“否”时,我遇到了关于将两个对象放在同一目录中的构建错误。
幸运的是,我注意到你们正在修改目标构建设置。这是最终工作的(armv6,armv7,并在Target build Settings下将“仅构建活动体系结构”设置为No)。作为免责声明,我已经在项目设置中将所有架构设置为armv6,armv7。
无论如何,谢谢你的帮助, 布伦特
答案 10 :(得分:2)
我必须确保在xCode 4.3.2上的目标和项目设置中更改这些设置,然后将其设置为armv6和armv7,无论我能够提交我的应用程序。
为了安全起见,我还在进行更改和执行清理,构建,归档周期之前退出了xCode。
答案 11 :(得分:0)
如果xCode继续抱怨armv7,请确保断开任何连接设备(特别是iPhone 5 !!)并重试。花了我几个小时才找到那条小信息。
答案 12 :(得分:0)
请注意;我必须为我的基础项目和我的应用程序中的嵌入式PhoneGap .xcodeproj文件执行这些步骤。
是的,我嵌入了PhoneGap;他们经常更新,我还有不到两个月的时间才能知道某个功能已被折旧。
答案 13 :(得分:0)
尝试将部署目标更改为高于armv6处理器的目标。 xCode的设置引用操作系统级别,例如:iOS版本#{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报告需要运行armv7代码iOS 4.2.5或更高版本。我相信,这款处理器再一次从3GS开始。* iOS 4.3似乎是我的选择。
答案 14 :(得分:0)
以下是Apple的文档:
它说有两件事你必须做对:
armv6
添加到架构构建设置No
。如果这仍然无法帮助您,请仔细检查您是否真的在更改正确的构建配置的体系结构构建设置 - 我浪费了半个小时摆弄错误的一个并且想知道它为什么不起作用...
在“产品”菜单中选择Edit Scheme...
,单击左侧列表中的“存档”方案,然后选中“构建配置”。如果它不符合您的预期,请更改该值。
答案 15 :(得分:0)
对我来说也是一个痛苦的问题。花了大约一个小时试图建立和重建 - 没有快乐。最后我必须这样做:
我想这是关于arm6,arm7的一堆行话,因为看起来我的项目对两者都有效,至少设置似乎这么说了),我的猜测是这是一种玩世不恭的技术性的玩世不恭的方式,这是我们不理解的,所以我们只选择简单的选项并定位最新的iOS(适合Apple,更多人是最新的)....
答案 16 :(得分:0)
在Snow Leopard上使用Xcode 4.2,我使用以下设置构建了一个适用于armv6(Iphone 3G及更低版本)和armv7(比3G更新的一切,包括3GS)的应用程序。
架构:armv6和armv7(已删除$(ARCHS_STANDARD_32_BIT))
仅构建活动体系结构:无需要的设备功能: 的ARMv6
如果您希望应用程序在3G及更低版本上运行,请不要将armv7置于所需的设备功能中。