可执行文件签名无效


70

我在iPhone上的临时分发有问题。我已经用SDK 3.0开发了一个应用程序。我有开发者许可证。我在项目中添加了证书和配置文件。因此,没有问题。

但是,当我尝试在iPhone上安装该应用程序时,它将编译该项目,然后"The executable was signed with invalid entitlements"在管理器窗口中显示错误:。我想念什么吗?我已经从2.2.1升级了iPhone,并从Apple下载了最新的SDK。

请帮我解决这个问题。

Answers:


52

“门户计划”中有很好的说明。如果您登录

http://developer.apple.com/iphone

然后点击左侧的发布,然后点击

创建和下载用于Ad Hoc分发的分发供应配置文件

底部的链接。

这是关键:

对于临时分发,请完成以下操作:

  • 在文件菜单中,选择新建文件-> iPhone操作系统->代码签名->授权。将文件命名为“ Entitlements.plist”,然后单击“完成”,这将在项目中创建默认权利文件的副本。
  • 选择新的Entitlments.plist文件,然后取消选中“ get-task-allow”属性。保存Entitlements.plist文件。(在Xcode 4中,get-task-allow被称为“可以调试”)
  • 选择目标并打开构建设置检查器。在“代码签名权利”构建设置中,键入新的Entitlements.plist文件的文件名,包括扩展名。除非您将Entitlements.plist文件放置在项目顶层以外的其他位置,否则无需指定路径。
  • 点击“构建”。(注意:您的二进制文件必须包含一个57x57像素的扁平正方形图像图标。该图标显示在iPhone或iPod touch主屏幕上。)

1
我只是想写同样的东西,很容易忘记您除了商店构建之外还需要临时的get-tak-allow!
Kendall Helmstetter Gelner 09年

这对我不起作用-导致相同的“无效权利”错误。但是基于下面的一些评论,我清除了所有内容,然后选中(并非未选中)“ get-task-allow”,然后再次尝试-这次它可以了。
乔·斯特劳特

我从git-hub更新了一个旧项目时也遇到了同样的问题,检查该属性(当我记得以前未设置该属性时)似乎也可以解决我的问题。奇怪。
TimM 2010年

2
哇,这只救了我大约12个小时的头部撞击。谢谢。
JayCrossler 2010年

3
为此,令人惊讶的是,如何在Apple网站上很难找到这些东西,看来SO是更好的资源。
KevinDTimm,2010年

34

如果您尝试配置应用配置文件中未包含该设备的应用,则也可能会发生此错误。

确保您的设备包含在要使用的开发配置文件中。错误消息以某种方式令人误解。我的权利实际上还可以。


14

我发现对于开发版本,需要检查“ get-task-allow”,而对于分发版本,则不需要检查。完成此操作(AFAIK)的最简单方法是在项目中拥有两个授权文件:Entitlements.plist和EntitlementsDebug.plist-并在构建项目设置中为项目中的各种配置引用正确的一个。


10
从来不需要这样做。对于您的开发构建配置,只需确保“代码签名权利”为空。
Ben Scheirman 2010年

2
get-task-allow未经检查对我
有用

我也必须检查get-task-allow才能在我的设备上进行开发。
回忆录,2010年


5

如果您遇到这种情况,为了将您的调试(!)版本部署到手机,似乎需要检查“ get-task-allow”。

a)检查构建设置。调试的“代码签名权利”中应该没有条目b)暂时删除Entitlements.plist并构建您的调试版本。如果它抱怨缺少Entitlements.plist,那么您可能也遇到了同样的情况,我今天不得不战斗。c)使用Entitlements.plist再次构建并启用“ get-task-allow”。如果现在可以使用,则您可能遇到相同的问题:

在弄乱了新的配置文件之后,我无法将Debug版本部署到手机上。AdHoc很好。我检查了一个)-空..嗯。我检查了b)-抱怨。c)-工作...

毕竟,我在编辑器中检查了project.pbjproj,并且-尽管GUI确实声称,但实际上“调试”部分中没有一个“代码签名权利”条目。我将其清空并完成。


这对我有用。在为AdHoc添加Entitlements.plist之后,xcode将该要求复制到了Debug和Release目标(尽管我没有在Build选项卡中输入)。手动从pbxproj文件中删除后,Debug构建将再次起作用。
进取的2011年

4

这是因为未在供应配置文件中选择要在其上运行应用程序的设备。

因此,只要经过认证,标识和简介选中您iOS Provisioning Profiles点击编辑,然后选择您的设备

在此处输入图片说明


2

我刚刚经历了三个小时的奋战。我刚刚将项目升级到4.2,由于某种原因,它无法正常工作。

我最终删除了Entitlements.plist文件,然后创建了一个新文件。

文件>新文件>代码签名>授权

将该文件命名为Entitlements.plist

确保它在xCode的“资源”组中。

它没有在Entitlements.plist文件中放入get-task-allow BOOL类型。我添加,选中,保存,未选中,保存。这让我感觉好些。

然后,我删除了我创建的Adhoc和Release配置文件。从Provisioning Portal重新下载它们,并将它们放回到xCode组织器中。

然后,我进入“构建设置”,并确保将正确的配置文件分配给“调试”和“发布”配置文件。

然后,我将更改为Release / Device。点击构建按钮,它起作用了。

我不知道为什么。


1

约翰的回答是99%正确。我发现(至少在我的配置中),您必须打开PROJECT的“构建设置”检查器。目标的构建设置不包含“代码签名权利”。如果您的项目中只有一个目标,那么这可能没有什么不同。但是,如果您有多个目标,则需要转到项目构建设置。无论如何,按照约翰所说的做之后,我的即兴分发构建非常完美。


1
这很奇怪,因为我在XCode 3.1的“目标”设置下拥有“代码签名权利”。
西蒙·伍德赛德

如果您在目标中将Base SDK iPhone Device设置为Simulator,则将显示代码签名权利。
史蒂夫·韦勒尔

1

在Xcode 5.1中,如果您进入“偏好设置”->“帐户”->“查看详细信息...”

确保签名身份状态为有效。如果显示已撤消,请单击加号按钮并添加适当的签名身份:iOS开发或iOS发行版。Xcode将用新的有效替代它。


1

对我来说解决了这个问题:https//coderwall.com/p/-ckobg

  1. 打开Project.xcodeproj> project.pbxproj
  2. 删除所有像这样的行:
    1. PROVISIONING_PROFILE = ...
    2. "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    3. CODE_SIGN_IDENTITY = ...
    4. "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  3. 再次设置目标的配置文件和代码签名

这解决了我的问题。特别是CODE_SIGN_IDENTITY = ...引起问题的生产线。我不知道Xcode是何时添加它的,或者我是否是自己错误地做的,但真是一团糟。与其他IDE相比,我在Xcode中遇到了很多奇怪的问题。我尝试避免这种情况,并坚持使用AppCode。
Tobiaswk

0

pJosh,这可能有助于理解。就我而言,我的团队供应配置文件即将到期(供应门户网站指出该文件由XCode管理)以及该应用程序的设备测试配置文件。(我仍然不知道为什么,但是门户网站的团队资料旁边有一个“更新”按钮,但是当我单击它时,它什么也没做。)

因此,我删除了即将过期的配置文件,然后在XCode中转到管理器(Command-Shift-2),在“库/配置文件”下,删除了即将过期的配置文件。然后单击底部的“刷新”,输入我的Apple ID,然后更新过期的Apple ID。

最后,在目标服务器上,我转到了“构建设置”,“代码签名”,并确保选择了配置文件。瞧,现在它可以构建到我的设备上了。


0

刚得到同样的错误代码。似乎有不同的原因导致此,因此有不同的解决方法。

就我而言,我有两个具有相同名称的不同设备(iPhone 4和iPhone 4S)。更改其中一个的名称完全为我解决了此错误。


0

我试图向现有应用程序添加iCloud支持,但是发现在添加权利并配置iCloud之后,我的应用程序将不再调试。

我意识到我的通用iOS开发证书与正在使用的应用具有不同的APPID。因此,为了解决此问题,我没有使用我的通用证书,而是为该APPID创建了特定的开发证书。

我在XCode中刷新了配置文件,清理了应用程序,断开了设备的连接,重新启动了XCOde和连接的设备,然后运行了,现在可以正常使用了!


0

我也花了几个小时与此打架。解决方法非常简单。在项目目录的根目录中编辑Entitlements.plist文件。找到显示的行<key>get-task-allow</key>。在它下面<false/>。将其更改为<true/>


0

抱歉,这很晚,但是我只是看着这个问题,发现对我有用的东西。我去了PROJECT-> Build Settings,找到了Code Signing部分。除了调试,Iphone Distribution: MY NAME还选择了我的发布配置文件。相反Iphone Developer: MY NAME,我在下拉列表中选择IpodProfile (for bundle identifiers com.myName.myApp了我的设备的配置文件。希望这可以帮助!


0

我刚发生在我管理的团队中的一名开发人员。

原来他的开发人员证书已过期,并且在续订后,我忽略了将他的证书添加到他的应用所使用的配置文件中。 在此处输入图片说明


0

我不同意苹果公司的最新更新许可协议。

简要地说:请登录到您的开发者帐户->个人资料->查看->阅读协议或让您的律师为您阅读->同意(按您自己的意愿)->然后再次点击个人资料以检查您的个人资料状态。

在我的场景中,没有显示有效的代码签名实体。当我按照上述步骤操作时,就可以看到它,并且我可以在设备上运行该应用程序和/或创建iPA文件而没有太大的困难。


0

如果一切似乎都正确设置,构建设置指向正确的配置文件,代码签名正确设置等发生了此问题。

发生问题是因为我刚刚创建了一个新方案,并且没有为新配置重新生成我的CocoaPods。从图像中可以看到,新的临时配置指向该Pods.production配置,而不是一个Pods.ad-hoc配置(分别测试)

演示临时配置和方案配置的不匹配

修理:

  • 将有问题的配置设置为 None-除非我这样做,否则cocoapods不会生成配置
  • 关闭XCode
  • pod install
  • 重新打开XCode并将新方案的配置设置为新生成的配置。

而已!


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.