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