2009-10-13 63 views
17

最近,我已将我的iPhone SDK操作系统从版本2.2.1升级到3.0版本。之后,在构建我的应用程序时,出现配置文件已过期的错误。所以我创建了一个新的配置文件。权利无效

然后我使用配置文件分配了我的应用程序。但是,在将我的应用程序同步到iPhone设备时,我在iTunes中遇到错误。错误消息是“应用程序'iGVA'未安装在iPhone上,因为权利无效。”

我检查了代码签名权利包含正确的权利plist文件。

这怎么解决?

回答

0

我也有这个问题。事实证明,我确定我编辑了一个配置来支持ad hoc,并确定我正在使用分发配置进行构建。但。我没有编辑过发布配置的属性,但发布的是(我以为我正在编辑发行版)。

这可能不是这样。但即使您确定,请仔细检查您是否使用了正确的配置,并且正确调整了此配置。

7

我得到了这个以及在Ad-Hoc Apps and Entitlements找到答案。

您可能需要确保您的Entitlements.plist文件的路径在您的项目设置中的“代码签名授权”下输入。

30

迈克尔的上面的答案是现货(或他指向的链接)。以下是我必须执行的步骤:

  • 有一个临时证书,其中检查了设备UDID。通过将该证书拖到XCode图标上来安装该证书。
  • 在该项目上,创建一个分配配置并将您的构建参数设置为适当的设备|分配。现在,我们为Device 3.0 |进行构建分配。
  • 我的项目没有包含Entitlements.plist文件 - 我不得不通过从菜单File |添加文件| iPhone OS |权利,并调用新文件Entitlements.plist
  • 新的plist文件只有一行 - 设置该行的值取消选中。
  • 在项目构建配置中,在代码签名授权的行中,输入Entitlements.plist文件名作为值。
  • 在代码签名标识,选择临时身份证明(虽然我发现,你也可以用你的分发证书的身份)
  • 现在生成:)
  • 交付所产生的应用程序文件加上AD-特别证明给那些给你UDID的人。应该管用 :)。
+2

我按照所有这些步骤,但仍然得到同样的错误。 – Sri 2010-11-15 13:39:25

+0

相同在这里...得到确切的错误,一切似乎都存在和正确!!? – mootymoots 2010-11-15 16:17:16

2

我越来越疯狂了。最后,我想我明白了。在项目设置中,我正确设置了正确的Adhoc配置中的授权和代码签名。然而,虽然在那里一切似乎都没问题,但当我选中“Project - > Edit Active Target”时,我的代码签名实体仍然停留在“iPhone Developer”上。

把它切换到正确的“iPhone Distribution”并重新编译之后,Xcode让我第一次允许代码签名。这一切都编译完成并传输到我的手机上!

我希望有帮助。我认真地认为这个问题是苹果方面的一个缺陷或缺陷。由于他们没有文档的IDE,我失去了好几个小时...

+0

同样在这里。但是'为什么 - 为什么'...??? – 2010-12-08 12:13:41

1

您还需要确保您有一个未到期的供应配置文件,这个配置文件在一段时间内阻碍了我(Ad Hoc配置文件似乎一年后过期)。错误消息是相同的,但它与没有有效的Entitlements.plist文件无关。

0

我刚刚发现导致此问题的另一种情况。您必须确保包含正确的配置文件。我有一个同时拥有iPhone和iPod版本的应用程序,以及从同一个项目构建的iPad版本。我显然使用iPad版本的应用程序发送了iPad ad hoc配置文件,但它不起作用。更糟的是,我使用Xcode在本地安装了正确的配置文件,因此我的机器上的所有内容都能正常工作。

1

确保当您为“设备”创建“构建和存档”时,您的配置不是“调试”。它似乎会正确创建存档,但是如果在执行“构建和存档”时将其设置为调试配置文件,则在安装.ipa设备时将失败。

7

测试人员需要一个Entitlements.plist文件来安装ad-hoc构建。默认的iOS模板不包含一个。在Xcode 3.2.4创建一个这样的:

  1. 从菜单中选择“文件>新建文件...”
  2. 在iOS的模板,有一个代码签名部分。选择名为Entitlements的证书图标。将文件命名为“Entitlements.plist”
  3. 在源代码树中选择Entitlements.plist。
  4. 选择“视图>属性列表类型> iPhone应享权利的plist”
  5. 添加一个新的关键属性列表(选择最上面一行,按回车键)
  6. 该项目可能会被命名为“可调试”。如果没有,请从可用选项中选择。这相当于“获取任务允许”。

如果您还没有一个,建立一个“临时”建立配置文件:

  1. 源代码树中选择目标。
  2. 从菜单中选择“文件>获取信息”
  3. 在检查员中。选择“Build”选项卡。
  4. 在“配置”,选择“编辑配置...”
  5. 选择‘发布’配置,单击‘复制’在屏幕的底部。
  6. 重命名新配置‘特设分配’

现在你已经创建了一个Entitlements.plist,你需要将它添加到你的构建设置。

  1. 在源代码树中选择您的目标。
  2. 从菜单中选择“文件>获取信息”
  3. 在检查员中。选择“Build”选项卡。
  4. 确保配置选择器设置为“Ad-Hoc Distribution”
  5. 在“代码签名”组中,将“代码签名授权”的值更改为“Entitlements.plist” - XCode可能已将一个你的相对路径。如果是这样,请改变它。

注 - 你必须安装自己的设备上的应用程序,如果你建立&运行与其它构建配置设置“代码签名权利”的错误。

最后,检查Entitlements.plist是否已添加到您的目标。

  1. 在源代码树中选择Entitlements.plist。
  2. 从菜单中选择“文件>获取信息”。
  3. 选择“目标”选项卡。
  4. 确保选中您的目标旁边的复选框。

您现在应该可以在没有此错误的情况下分发您的临时版本。

这其中大部分是从苹果的Managing Application Entitlements Guide中收集到的,其余的则是试用&错误。

1

此问题可能与权利plist本身没有任何关系。我有两个iPod Touch用于测试。当我去与他们同步应用程序时,一个工作得很好,但对于另一个我得到'权利是无效的'错误。事实证明,一个设备(工作的设备)上有移动配置文件,而另一个设备没有。这是我的一个明显的疏忽。然而,扔给我的是我从未明确地将配置文件添加到第一个设备。不知道它是如何进入该设备的(我还是这个新手 - 大声笑) - 在过去,我总是将它拖放到安装有该设备的组织者中,但这次我没有这样做。

因此,配置文件和xcode都使用正确的ID等完美设置,但应用程序仍然无法同步。很显然,如果设备配置不当,您将会收到错误信息。如果错误在这种情况下更有用,会很好。

0

每当我在设备列表中添加一个新设备,然后通过选择新设备并将它们拖到Xcode并准备构建来创建新配置文件时,我遇到了问题。

我用的建立设备安装的那一刻我得到的错误

权利是无效的

我试图用我能想到的所有办法来解决它,但没有正面来出。无论如何,我必须创建新的App-ID或重复创建配置文件的整个过程。然后我可以在设备上安装该版本。

0

从文档:

构建应用程序的Ad Hoc 分布与建设 应用程序的App Store的分布, 的两个额外的步骤异常。 首先,您需要创建Ad Hoc 分发预配配置文件和 将您想分发的iOS设备的UDID添加到使用 iPhone Developer Program Provisioning Portal。其次,您需要创建 代码签名授权文件。有关如何创建 授权文件的 信息,请参阅iOS开发指南中的 的管理 应用程序授权部分。


管理应用程序应享权利

的iOS提供了访问特殊 资源和能力,如 是否您的应用程序可以 调试,通过属性称为 权利。要指定应用程序中的授权 信息,您需要将包含授权定义 (键/值对)的授权属性列表文件 添加到您的项目中。 当您构建应用程序时,Xcode 将该文件复制到生成的 应用程序包中。

要的权利属性列表 文件添加到您的项目:

在组&文件列表中,选择 资源组。选择文件>新建 文件。选择iOS>代码签名> 权利模板。将文件命名为 Entitlements.plist。 (你可以使用任何 名;只是确保它的代码的价值相匹配 签约享权利建立 设置,如本 节后面解释)设置 属性列表文件的类型iPhone 授权。在文本编辑器中选择文件 ,选择查看> 属性列表类型> iPhone 权利plist。

将您的授权条目添加到 文件。对于 您需要定义每个权利属性:

单击添加儿童或添加同级 按钮将选定的 行权。添加子按钮有三个描述层次结构的线 ,添加 兄弟按钮在 上有一个加号(+)。从出现的弹出菜单中选择授权属性 。如果 您需要添加的权利 未出现在菜单中,请选择 查看>属性列表类型>默认 用于文件类型。然后输入 授权密钥的名称和类型。

输入属性的值。设置 代码签名授权版本 设置目标为名称 新增权利 属性列表文件。


一旦你 创建了应享权利文件 并将其添加到您的代码签名 应享权利编设置,打开 应享权利文件,添加或编辑 获得任务,允许键将其设置为 false。

除了压缩您的.app 包分发您特设建立 测试人员等建议 你之前也 分布压缩 供应配置文件,因为某些电子邮件 客户端和服务器可能会破坏 供应配置文件。

有关Ad Hoc 分配的信息,请阅读 发布iOS应用程序开发指南中的应用程序 部分。

1

这也发生在我身上,其他答案并没有为我解决。

经过半天的建设,安装,清洁,点击无济于事 - 我终于从代码签名权利下的盒子中删除Entitlements.plist,保存并重新输入 - 瞧!它再次运作!我从来没有碰过实际的权利文件,只是设置。

1

我在XCode 4中有这个。我尝试清理,删除和重新创建授权文件,但仍然没有快乐。然后我将“可以调试”的值从YES更改为NO ..并且工作正常。无论如何,它似乎现在正常工作,我希望这有助于!

2

为了记录的缘故,所有这些精彩的答案都没有帮助我,我想我会分享我的权利故障。

所以,是的,我说的UDID,得到了配置,验证了在手机上,在构建设置等

我的毛刺(感谢http://www.musicalgeometry.com/?p=1237)为特设方案设定为特设配置仅适用于运行设置

对于存档设置它仍然指向旧的发布配置。

(这些设置在编辑窗口方案左侧的选项卡。)

Run app settings

Archive settings

如果我救一个人我的无奈 - 我做我的一点。

1

详细的笔记我有同样的问题,使用的Xcode 4.它变成了一个错误选择身份引起在组织者(存档部分)的“分享...”对话框中。 正确的选择(对我来说)是:“不要重签”。

0

化妆舒尔以选择TARGETS签名身份;)