我已经有一段时间没有调整项目构建设置了。在升级到最近的SDK之后,我在构建我的临时分发配置时遇到了麻烦。
Build生成以下警告和错误:
警告:iPhone应用程序应该包含armv6架构(当前 = "armv7") iPhone/iPod Touch:应用程序可执行文件缺少一个必需的 体系结构。必须至少是以下架构中的一个 现在:armv6 (-19033)
警告:iPhone应用程序应该包含armv6架构(当前 = "armv7")
iPhone/iPod Touch:应用程序可执行文件缺少一个必需的 体系结构。必须至少是以下架构中的一个 现在:armv6 (-19033)
然而,在我的项目中,我认为我的设置是正确的:
我已经清除了所有目标。
谢谢你的建议。
如果您取消勾选“只构建活动架构”,那么它将构建所有有效的架构。
更新:这不再适用于Xcode 4 -遵循Nick的指示Xcode 4及以后。
即使遵循公认的答案,我也有这个问题,并发现以下工作:
在你的信息。plist,为Required Device Capabilities添加一个条目。这应该是一个数组,将有两个条目。
它看起来是这样的:
如果使用Xcode 4.2或更高版本,请尝试以下操作:
单击您的项目名称(在左列中),然后单击目标:
单击“构建设置”选项卡(在右列):
单击“架构”下的“发布”或“分发”行,并选择“其他…”:
更新:你应该添加armv7s来瞄准iPhone 5。(如果使用Xcode 4.5或更高版本构建,则放弃armv6,因为后者不再支持armv6。)
就是这样。您现在应该能够构建/存档而不会生成错误。
如果仍然不工作,请参阅以下是贾斯汀·里斯的回答,这建议在您的信息中的“必需的设备功能”下添加armv6和armv7的条目。plist文件。
除了Nick关于Xcode 4.2的回答,你可能还需要查看你的信息。plist文件。似乎在Xcode 4.2中启动的新项目默认在“所需设备能力”中指定“armv7”。如果你想要支持运行armv6的设备(例如iPhone 3G),你需要删除这个选项。
在projectname - info .plist的“Required device capabilities”中删除armv7
对我来说,并不是每个答案都适用。但是我尝试了TARGETS > Architectures > Debug,并添加了一个加按钮的新行,并键入'armv6'(with out '),然后单击Done。
最后CMD+B,然后右键单击PrjectName。>在Finder中打开>压缩“PROJECT_NAME. exe”APP"(在Debug-iphoneos中)>上传到AppStore
如果你有包括项目,请配置它全部。 希望你的帮助。
在尝试了这些混合的答案之后,我终于偶然发现了如何让它起作用。我现在对苹果恨之入骨。他们又浪费了我一个小时。这是我的配置。
在Snow Leopard上使用Xcode 4.2,我使用以下设置构建了一个在armv6 (Iphone 3G及以下)和armv7(包括3GS在内的所有更新的3G)上都能运行的应用程序。
architectures: armv6 and armv7 (remove $(ARCHS_STANDARD_32_BIT)) . 仅构建活动架构:没有所需的设备功能: armv6 < / p >
如果你想让应用程序在3G或更低的速度上运行,就不要把armv7放在必要的设备功能中。
对我来说也是个痛苦的问题。只是花了大约一个小时试图建造和重建-没有乐趣。最后我不得不这样做:
我猜这是一堆关于arm6, arm7的术语,因为它看起来像我的项目都是有效的,至少设置似乎是这样说的),我猜这是一种愤世嫉俗的方式来欺骗我们的技术,我们不理解,所以我们只是采取简单的选择,瞄准最新的iOS(对苹果有更多的人是最新的)....
哇,我大约每6个月更新/提交一次应用。每次我做这件事,我都要学习“新的”方法。
当运行iOS 5.1和Xcode 4.3.2时,同样的问题
谢谢你的帖子!我花了一段时间将所有项目设置更新到armv6, armv7,但没有乐趣。当我将“只构建活动架构”设置为“否”时,我得到了一个关于将两个对象放在同一目录中的构建错误。
幸运的是,我注意到你们正在修改目标构建设置。这就是最终成功的方法(armv6, armv7,并在目标构建设置中将“仅构建活动架构”设置为“No”)。作为免责声明,我已经在项目设置中将所有架构设置为armv6和armv7。
以下是苹果的文档:
技术Q& a QA1760
它说有两件事你必须做对:
armv6
No
如果这仍然对你没有帮助,请仔细检查你是否真的将架构构建设置更改为正确的构建配置-我浪费了半个小时来摆弄错误的配置,并想知道为什么它不起作用…
在Product菜单中选择Edit Scheme...,单击左侧列表中的“Archive”方案并检查Build Configuration。如果不是您所期望的值,则更改该值。
Edit Scheme...
我必须确保在xCode 4.3.2的目标和项目设置中更改这些设置,并将其设置为在我能够提交应用程序的任何地方为armv6和armv7构建。
为了安全起见,我还在进行更改和进行清洁、构建、归档循环之间退出了xCode。
尝试将您的部署目标更改为高于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报告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
请注意;我必须为我的基础项目和应用程序中嵌入的PhoneGap .xcodeproj文件执行这些步骤。
是的,我嵌入PhoneGap;它们更新得非常频繁,我在不到两个月的时间里就知道某个功能被贬低了。
ios 6的更新
Xcode 4.5的变化。X for ios 6
我也有这个问题。我刚刚把我的部署目标设置为4.3,只留下armv7架构,它工作了。在某种程度上,几乎每个人都有5个,所以4.3就可以了。
如果xCode一直抱怨armv7,请确保断开任何连接设备(特别是iPhone 5!!)并重试。我花了好几个小时才找到这条线索。