72

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

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

请帮我解决这个问题。

4

19 回答 19

52

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

http://developer.apple.com/iphone

然后单击左侧的分发,然后单击

为临时分发创建和下载分发配置文件

链接在底部。

这是关键点:

对于 Ad Hoc Distribution,请完成以下操作:

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

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

确保您的设备包含在您要使用的开发配置文件中。不知何故,错误消息具有误导性。我的权利实际上还可以。

于 2011-07-05T12:35:02.010 回答
14

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

于 2010-01-26T17:14:34.523 回答
6

Xcode 4 中的 Ad Hoc 构建不再需要代码签名权利 - 请参阅Apple 技术说明 TN2250中的详细说明

于 2011-08-11T20:20:56.357 回答
5

如果您遇到这种情况,似乎需要检查“get-task-allow”才能将您的调试(!)构建部署到您的手机,请检查:

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

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

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

于 2010-10-19T12:19:53.230 回答
4

这是因为您运行应用程序的设备未使用您的配置文件选择。

所以只需通过证书、标识符和配置文件选择您的iOS Provisioning Profiles点击编辑然后选择您的设备

在此处输入图像描述

于 2013-06-25T10:02:12.870 回答
3

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

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

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

将文件命名为 Entitlements.plist

确保它位于 xCode 的 Resources 组中。

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

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

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

然后我将其更改为发布/设备。点击构建按钮,它工作。

我不知道为什么。

于 2010-12-14T03:28:55.227 回答
1

For me that solved it: https://coderwall.com/p/-ckobg

  1. Open Project.xcodeproj > project.pbxproj
  2. Remove all lines like these:
    1. PROVISIONING_PROFILE = ...
    2. "PROVISIONING_PROFILE[sdk=iphoneos*]" = ...
    3. CODE_SIGN_IDENTITY = ...
    4. "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ...
  3. Set provisioning profiles & code signings for the target again
于 2014-09-09T14:26:44.730 回答
1

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

于 2009-10-08T22:22:33.857 回答
1

在 Xcode 5.1 中,如果您进入 Preferences -> Accounts -> View Details...

确保签名身份状态为有效。如果显示已撤销,请点击加号按钮并添加适当的签名身份:iOS 开发或 iOS 分发。Xcode 将用一个新的、有效的替换它。

于 2014-04-01T17:13:56.827 回答
0

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

我意识到我的通用 iOS 开发证书与我正在开发的应用程序具有不同的 APPID。因此,为了修复它,我没有使用我的通用证书,而是为该 APPID 创建了一个特定的开发证书。

我在 XCode 中刷新了我的配置文件,清理了应用程序,断开了我的设备,重新启动了 XCOde 并连接了设备并运行,现在它可以工作了!

于 2012-10-23T16:15:07.310 回答
0

我刚刚在我管理的团队中的一名开发人员身上遇到了这种情况。

结果他的开发者证书过期了,更新后,我忽略了将他的证书添加到他的应用程序使用的配置文件中。 在此处输入图像描述

于 2014-03-17T12:34:42.043 回答
0

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

于 2013-05-04T14:19:30.800 回答
0

我没有同意苹果新更新的许可协议。

简要说明:请登录您的开发者帐户 -> 个人资料 -> 审核 -> 阅读协议或让您的律师为您阅读 -> 同意(根据您的意愿) -> 再次单击个人资料以检查您的个人资料的状态.

在我的场景中,有效的代码签名实体没有出现。当我按照上述程序进行操作时,它是可见的,并且我能够在设备上运行应用程序和/或创建 iPA 文件而没有太大困难。

于 2014-07-15T06:15:19.147 回答
0

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

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

演示 ad-hoc 配置和方案配置不匹配

修理:

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

而已!

于 2014-10-24T17:21:39.530 回答
0

我也花了几个小时来解决这个问题。修复非常简单。在项目目录的根目录中编辑 Entitlements.plist 文件。找到说<key>get-task-allow</key>. 下面应该是<false/>。将其更改为<true/>.

于 2012-11-29T15:46:42.977 回答
0

pJosh,这可能有助于理解。在我的情况下,我的团队配置文件即将过期(配置门户表明它由 XCode 管理),以及应用程序的设备测试配置文件。(我仍然不知道为什么,但是门户网站的团队资料旁边有一个“更新”按钮,但是当我点击它时它什么也不会做。)

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

最后,在我的 Target 上,我去了 Build Settings、Code Signing,并确保选择了配置文件。瞧,现在它构建到我的设备上。

于 2011-09-09T10:18:12.967 回答
0

刚刚得到同样的错误代码。似乎有不同的事情导致了这个问题,因此有不同的方法来解决它。

在我的例子中,我有两个不同的设备同名(一个 iPhone 4 和一个 iPhone 4S)。更改其中一个的名称为我完全解决了这个错误......

于 2012-01-16T04:48:17.763 回答
-1

检查您的设备是否包含在配置文件中。

于 2013-01-06T14:45:48.993 回答