验证应用程序,应用程序缺少架构armv7。

17

当我在更新我的第一个iOS应用程序时,我遇到了两个验证问题。

*iPhone/iPod Touch:application executable is missing a required architecture. 
At least one of the following architecture(s) must be present: armv7

*Unable to extract entitlements from application: (null)

Info.plist和构建设置都是默认值,我唯一更改的是代码签名身份调试和发布为我的分发预配文件,并将应用程序ID和包标识符完全相同。

13个回答

76

当我连接我的iPhone 5并建立存档时,发生了这种情况。当我断开iPhone并建立存档时,一切都顺利进行。


感谢您节省了我的时间。我遇到了类似的问题,但是出现了armv7s错误:“此捆绑包无效。包含armv7s架构的应用程序需要包含armv7架构”。不知道为什么会出现这种情况。将我的iPhone 5从USB端口拔出解决了这个奇怪的问题。 - interrupt
我甚至不敢相信这个哈哈!但它起作用了!拔掉了我的手机,直接通过了验证!+1 - Albert Renshaw
又是一个荒谬的浪费时间的问题!谢谢,之前我一度想把头发都拔光了..... - mpowered
8
这并不是魔法,而是你项目中的“仅构建活动架构”设置。对于分发配置,你需要将其设置为“NO”,可以参考这篇老但经典的参考文章:http://useyourloaf.com/blog/2010/04/21/xcode-build-active-architecture-only.html。 - natbro
1
哈哈... 真不敢相信 =))) - duongvanthai
显示剩余4条评论

23

@chadbag 这个评论让我开心了,谢谢 :) 还有 Thiago,请接受这个答案。 - Rob
谢谢你分享这个见解! - Benedicte Raae

4

确认。我刚刚拔下我的iPhone 5s并重新将应用程序归档。一切都很顺利。

唉,我这40分钟的时间再也回不来了。


4

现在我解决了问题,其实很简单,就是我的可执行文件名存在问题。

我的目标文件夹包含一个无效字符(+),所以当我上传我的应用程序时,会显示错误信息(该捆绑包无效,可执行文件的名称不能包含这些字符....)。因此,我将可执行文件名由${EXECUTABLE_NAME}更改为Chemistry,但是我的应用程序的注册名称是Chemistry++。

然后验证显示出其他问题,这些问题是由更改可执行文件名引起的。

为了解决这个问题,我双击了项目和目标两次,并更改了名称,使其不包含任何无效字符(* . , + {} () ),然后所有问题都消失了。

然后它就成功上传了。

(当我更改Info.plist可执行文件名为其他名称时,会出现不兼容情况,因此请勿更改并将其恢复默认值(${EXECUTABLE_NAME}),否则会产生其他问题。)

等待苹果审核中!!!


由于某些原因,当您重用旧项目创建新应用程序时,更改可执行文件名称(在info plist中)会导致这些问题。这对我和所有其他答案都是正确的,例如有效架构,目标iOS等。 - Gamma-Point

3

我连接了iPhone 5s,并在验证我的应用程序时遇到了这个错误

enter image description here

"Build Active Architecture Only"设置为NO,可解决此问题,需要在targets和project中进行设置。


2
确保你为所有目标、库和框架设置“仅构建活动架构”为NO。

2

请确保在armv7后面没有逗号。

当我在目标设置中设置架构时,我写了:

armv7, armv7s

看起来还不错,但当我点击“其他”进行编辑时,我意识到它被设置为:

armv7,
armv7s

去掉逗号(,)解决了这个问题。

2
一拔掉iPad电源线,警告就消失了,我就可以编译并上传到应用商店。

1

检查目标和项目设置,并将“仅构建活动架构”设置为NO。


1
当我尝试验证我要提交到应用商店的(仅限于iPad)应用程序时,我遇到了三个错误:
1. iPad:应用程序可执行文件缺少必需的架构。必须至少存在以下架构之一:armv7。
实际上,在我所有的架构设置中,我都有armv7和armv7s,并且是“Build Active Architecture Only”设置为“No”。对我起作用的是手动从此列表中删除armv7s,只留下armv7。只有这样才会消除此错误。
2. 应用程序未通过代码签名验证。签名无效,包含不允许的权限或未使用iPhone Distribution证书签名。
以前,我一直在使用企业许可证构建这个iPad应用程序,以进行公司内部的Ad-Hoc分发。现在,我正在尝试使用开发者许可证来构建它,以便可以将其部署到应用商店。
要解决此问题,我需要:
  • 点击左侧窗口中的我的项目

  • 在中间窗口中选择项目名称(在目标下)

  • 选择“Build Settings”选项卡

  • 在行选项下方,选择“Basic”和“Combined”选项。

  • 现在,在“Code-Signing Identity”下,我需要确保我选择了与我的Apple开发者帐户相关的代码签名,而不是企业帐户,并且是专门针对该项目的。

3. 无法从应用程序中提取授权:(null)

什么?!

还记得以前应用程序只有一个名称吗?使用XCode后,您的应用程序具有捆绑名称、产品名称、可执行文件名称和捆绑显示名称。

几位StackOverflow用户已经注意到这一点,并指向了苹果的文档,以解释它们之间的区别……但祝你好运。

对我来说,要解决此问题,我只需要确保 * -Info.plist文件中的可执行文件名称和捆绑名称相同,并与产品名称匹配。

令人沮丧的是,产品名称被隐藏在上面第二部分提到的选项卡下面,即选择“构建设置”选项卡,然后在标题栏中选择“基本”和“组合”。希望这对其他开发者有用。所有这些都是使用XCode 4.6.3完成的,所以当iOS 7和XCode 5推出时,它们无疑会过时。到那时,您的应用程序可能还需要昵称和中间名。谁知道呢?Mike

www.MikesKnowledgeBase.com


1
这对我来说是解决方案。我遇到了完全相同的问题。我的客户通过更改名称在多个应用程序中使用相同的代码。我必须按照第3步中描述的方式更改构建设置下的应用程序名称(产品名称)。谢谢! - Mahendra Liya
感谢您的反馈。我一直在想这是否只是我的运气不好,总是遇到一个接着一个的XCode问题!很高兴我的问题和解决方案对您有帮助! - Mike Gledhill
有时客户想要使用相同的代码库重新设计并创建一个新的应用程序,这就是导致我的问题的原因。我从客户那里收到的代码被其他开发人员重新设计了,当我尝试上传到AppStore时遇到了这个错误。 - Mahendra Liya

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