签名者无效错误

时间:2009-12-07 02:14:18

标签: iphone xcode itunes itunesconnect adhoc

我已经创建了我的应用程序的临时版本,并希望其他人安装它。我在配置文件中有他们的设备ID(实际上是两个)。我的证书与临时和应用商店配置相同。证书在钥匙串中有效。我在Xcode中为此构建选择了ad hoc配置文件,该配置链接到分发证书。

我向用户发送配置文件和.app文件。他们将两者都放入iTunes并同步,然后在两台设备上都出现此错误:

The application "myapp" was not installed on the iPhone "user's iPhone" because the signer is not valid.

我已从我的iPhone中删除了所有个人资料,将上述两个文件放入iTunes,同步并成功安装了该应用。我不能让它为我重复。我需要在本地重新解决这个问题以找出问题所在。有什么想法可以做到吗?

10 个答案:

答案 0 :(得分:16)

您是否添加了权利?将签名置于目标级别,而不是项目级别?选择Ad Hoc配置文件?在构建之前干净吗?选择构建中的Ad Hoc设备?

最好的办法是按照Apple的文档完全,让你的构建设置完全匹配Apple的。

答案 1 :(得分:6)

最好检查.app文件中捆绑的imbedded.mobileprovision文件,以确保UID在那里。只需执行以下操作:

  1. 解压缩ProblemApp.ipa
  2. cd Payload / ProblemApp.app
  3. pico imbedded.mobileprovision
  4. 在此文件中查找设备的UID。如果它不存在,那么它可能不会添加到门户中的配置文件中。

答案 2 :(得分:4)

来自文档:

  

为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开发指南中的部分。

答案 3 :(得分:3)

我最近在最近的版本中遇到了一个测试人员遇到了这个问题。事实证明,我的测试人员已经重置了他们的iPod Touch,并在此过程中删除了配置文件。

需要考虑的事情。

答案 4 :(得分:2)

我通过做一些比其他人发布的更糟糕的事情来解决这个错误。我在配置文件中添加了新设备,但忘记下载更新版本,将其添加到Xcode,并将项目指向它。当我正确设置时,测试人员可以安装应用程序。

答案 5 :(得分:1)

这是另一个有趣的....如果您有iphone和ipad的单独授权文件,请确保为每个特定版本设置文件的目标...否则它将不会显示在构建中并且您'会收到此错误

答案 6 :(得分:1)

我到这里是因为我和OP有同样的问题。事实证明我在权利文件中没有UDID,即使我确定我在XCode组织器中使用了刷新。另一次刷新没有任何区别。

最后,我删除了所有配置文件,然后刷新了。事情现在有效。

我不知道这是我的设置中的故障还是操作员错误。但是,万一其他人发现自己处于这种情况:可能需要付费才能删除您的配置文件然后刷新。

答案 7 :(得分:0)

对于运行IOS 3.1.3的iphone 3G,这对我不起作用。我通过查看settings-> general(没有列出配置文件选项)验证了分发配置文件不在手机上。

然后我安装了iphone配置实用程序:

http://support.apple.com/kb/DL851

然后:

  1. 运行iphone config
  2. 将embedded.mobileprovision文件拖放到应用
  3. 点击左侧的设备
  4. 点击“配置资料”标签
  5. 点击个人资料,然后点击“安装”按钮
  6. 然后安装的应用就好了。

答案 8 :(得分:0)

我也遇到了与OP相同的问题。愚蠢的错误:当我将它作为设备注册时,我意外地将最后两位数字从我试图临时分发的设备上删除。

答案 9 :(得分:0)

我两次遇到同样的问题(xcode 4.2 ios 5

第一,我忘记在建筑中添加armv6了

第二,我已经创建了许多具有相同开发者ID的配置文件的时间,我应该根据捆绑标识符的使用删除其他密钥链...并且我错误地删除了有效并使用了其他kechain