权利无效

时间:2009-10-13 07:17:31

标签: xcode iphone-sdk-3.0

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

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

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

如何解决这个问题?

17 个答案:

答案 0 :(得分:30)

迈克尔上面的回答是现场(或他指出的链接)。以下是我必须采取的步骤才能使其发挥作用:

  • 拥有一个检查设备UDID的临时证书。通过将证书拖放到XCode图标上来安装该证书。
  • 在项目中,创建分发配置并将构建参数设置为适当的设备|分配。现在,我们为Device 3.0 |构建分布。
  • 我的项目没有包含Entitlements.plist文件 - 我必须通过从菜单File |中选择来添加它。添加文件| IPhone OS |权利,并调用新文件Entitlements.plist
  • 新的plist文件只有一行 - 将该行的值设置为未选中。
  • 在项目构建配置中,在Code Signing Entitlements行中,输入Entitlements.plist文件名作为值。
  • 在代码签名标识中,选择临时证书标识(尽管我发现您也可以使用您的分发证书标识)
  • NOW BUILD:)
  • 将生成的应用程序文件和ad-hoc证书交付给提供UDID的人员。应该工作:)。

答案 1 :(得分:7)

我也对此感到满意,并在 Ad-Hoc Apps and Entitlements 中找到答案。

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

答案 2 :(得分:7)

测试人员需要Entitlements.plist文件才能安装ad-hoc版本。默认的iOS模板不包含一个。在XCode 3.2.4中,您可以创建一个这样的:

  1. 从菜单中选择“文件>新文件...”
  2. 在iOS模板下,有一个代码签名部分。选择名为Entitlements的证书图标。将文件命名为“Entitlements.plist”
  3. 在源代码树中选择Entitlements.plist。
  4. 选择“查看>属性列表类型> iPhone权利列表”
  5. 将新密钥添加到属性列表中(选择顶行,按返回)
  6. 该项目可能会命名为“可以调试”。如果没有,请从可用选项中选择。这相当于“get-task-allow”。
  7. 如果您还没有,请创建“ad-hoc”构建配置文件:

    1. 在源树中选择目标。
    2. 从菜单中选择“文件>获取信息”
    3. 在检查员。选择“构建”选项卡。
    4. 在“配置”下,选择“编辑配置...”
    5. 选择“发布”配置,点击屏幕底部的“复制”。
    6. 重命名新配置“Ad-Hoc Distribution”
    7. 现在您已经创建了一个Entitlements.plist,您需要将其添加到您的构建设置中。

      1. 在源树中选择目标。
      2. 从菜单中选择“文件>获取信息”
      3. 在检查员。选择“构建”选项卡。
      4. 确保配置选择器设置为“Ad-Hoc Distribution”
      5. 在“代码签名”组中,将“代码签名权利”的值更改为“Entitlements.plist” - XCode可能已经为您设置了相对路径。如果是,请更改它。
      6. 注意 - 如果您构建和安装应用程序,则在自己的设备上安装应用程序时会出错。运行“代码签名权限”设置为其他构建配置。

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

        1. 在源树中选择Entitlements.plist。
        2. 从菜单中选择“文件>获取信息”。
        3. 选择“目标”标签。
        4. 确保选中目标旁边的复选框。
        5. 您现在应该能够在没有此错误的情况下分发您的临时版本。

          大部分内容都来自Apple的Managing Application Entitlements Guide,其余部分是通过试用而获得的。错误。

答案 3 :(得分:2)

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

在将其切换到正确的“iPhone发行版”并重新编译后,Xcode要求我首次允许代码签名。它全部编译完毕并转移到我的手机上!

我希望有所帮助。我认真地认为这个问题是苹果公司的一个漏洞或缺陷。由于他们没有记录的IDE,我失去了几个小时的简单事情......

答案 4 :(得分:2)

Xcode 4中的Ad Hoc版本不再需要代码签名权利 - 请参阅Apple Technical Note TN2250

中的详细说明

答案 5 :(得分:2)

为了纪录,由于所有这些精彩的答案对我没有帮助,我以为我会分享我的权利故障。

所以是的,我添加了UDID,获得了配置,在手机上验证了,在构建设置中等等。

我的故障(感谢http://www.musicalgeometry.com/?p=1237)是Ad Hoc 计划仅设置为Ad Hoc 配置 仅用于运行设置

对于 存档设置 ,它仍然指向旧版本配置。

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

Run app settings

Archive settings

如果我拯救了我的挫折感 - 我已经完成了我的任务。

答案 6 :(得分:1)

此问题可能与Entitlements plist本身无关。我有两个用于测试的iPod Touch。当我与他们同步应用程序时,一个工作完美,但另一方面,我得到'权利无效'错误。事实证明,一个设备(工作的设备)上有移动配置文件,而另一个设备没有。这对我来说是一个明显的疏忽。然而,让我失望的是我从未明确地将配置文件添加到第一个设备。不确定它是如何进入该设备的(我还是新手 - 大声笑) - 过去我总是把它拖到组织器中并附带设备,但这次我没有这样做。

因此,配置文件和xcode都使用正确的ID等完美设置,但应用仍无法同步。显然,如果没有正确配置设备,您将收到错误。如果错误在这种情况下更有帮助,那就太好了。

答案 7 :(得分:1)

我有同样的问题,使用Xcode 4.结果是由于在Organizer的(Archives部分)的“Share ...”对话框中错误选择了Identity。 正确的选择(对我来说)是:“不要重新签名”。

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

在花了半天时间建造,安装,清洁,点击无效后 - 我终于从代码签名权利下的框中删除Entitlements.plist,保存并再次输入 - 瞧!它再次奏效!我从未触及过实际的Entitlements文件,只是设置。

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

答案 12 :(得分:0)

来自文档:

  

为Ad Hoc构建应用   分配类似于建立一个   适用于App Store分发的应用程序   两个额外步骤的例外。   首先,您需要创建一个Ad Hoc   分配供应配置文件和   添加iOS设备的UDID   你想分发到使用   iPhone开发人员计划供应   门户。其次,你需要创建一个   代码签名权利文件。对于   有关如何创建的信息   权利文件读取管理   应用程序权利部分   iOS开发指南。


  

管理应用程序权利

     

iOS提供特殊访问权限   资源和能力 - 如   你的申请是否可以   调试的调试属性   权利。指定权利   您的申请中的信息   添加权利属性列表文件   包含权利定义   (键/值对)到您的项目。   在构建应用程序时,Xcode   将文件复制到生成的文件   应用程序包。

     

添加权利属性列表   提交到您的项目:

     

在小组&文件列表,选择   资源组。选择文件>新   文件。选择iOS>代码签名>   权利模板。命名文件   Entitlements.plist。 (你可以使用任何   名称;确保它与值匹配   代码签名权利的构建   设置,如下文所述   部分。)设置的类型   属性列表文件到iPhone   授权。选择文件   在文本编辑器中,选择View>   物业清单类型>苹果手机   权利持续存在。

     

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

     

单击“添加子项”或“添加同级”   所选按钮右侧的按钮   行。 “添加子项”按钮有三个   描述层次结构的线条,添加   同级按钮有一个加号(+)   它。选择权利属性   从出现的弹出菜单中。如果   您需要添加的权利   没有出现在菜单中,请选择   查看>物业清单类型>默认   对于文件类型。然后输入   权利 - 密钥名称和类型。

     

输入属性的值。组   代码签名权利构建   将目标设置为名称   新添加的权利   property-list file。


  

一旦你   创建了您的Entitlements文件   并将其添加到您的代码签名中   权利构建设置,打开   权利文件并添加或编辑   get-task-allow键并将其设置为   假的。

     

除了压缩你的.app   捆绑以分发您的Ad Hoc构建   对于测试人员等,建议   你也压缩了   之前的配置文件   分发因为某些电子邮件   客户端和服务器可能会破坏   供应资料。

     

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

答案 13 :(得分:0)

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

当我使用该版本进行设备安装时,我收到了错误

  

权利无效

我试图通过我能想到的所有方式解决它,但没有任何积极的结果出来。无论如何,我必须制作新的App-ID或者必须重复创建配置文件的整个过程。然后我可以在设备上安装构建。

答案 14 :(得分:0)

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

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

确保在 TARGETS 中选择签名身份;)