未安装应用XXX ...因为权利无效

时间:2011-03-03 16:50:53

标签: xcode ios distribution adhoc entitlements

我正在尝试为一小组非开发人员测试人员创建一个版本,以便在我将其提交到iTunes Connect之前在我的应用上进行一些beta测试。我在"Distributing Your App for Testing上阅读了开发人员指南(您可能需要在Apple注册才能阅读此内容)以及Technical Note TN2250 on Ad Hoc distribution,以及无数博客文章和Stack Overflow文章,但迄今为止没有成功。

我采取的步骤:

  • (我正在运行Xcode 3.2.5。)
  • 我创建了一个开发 在iOS中配置配置文件 供应门户网站,包括 适用于所有测试人员的设备。
  • 我已下载此个人资料 通过拖动将其安装到Xcode中 它到组织者窗口,我可以 看下面的个人资料 开发>供应配置文件
  • 我已将此个人资料设为“代码” 签名身份>任何iOS“都在 项目和目标设置
  • 我创建了一个Entitlements.plist 文件,将属性列表类型设置为 “iPhone Entitlements plist”,删除 所有行除了“可以 调试“,并将其设置为未选中”
  • 我设置了“代码签名” 权利“to Entitlements.plist (确切的,区分大小写的名称)in 项目和目标设置
  • 我“建立和存档”'我的项目
  • 从主办单位窗口,我已经 选择了我的项目&点击 “分享......”,选择相同 上面使用的配置文件和 将生成的.ipa保存到磁盘
  • 我压缩了.ipa和.ipa 配置文件到zip文件 并通过电子邮件发送给我的测试人员

测试人员:

  • 解压缩我发送的文件
  • 只需拖动即可尝试安装 .ipa到iTunes并同步
  • 首先拖动尝试安装 .mobileprofile到iTunes和 同步

在任何一种情况下,在同步结束时,他们会收到“他们的设备和设备名称上未安装应用[我的应用名称]的对话框>]因为权利无效。“

值得注意的是,去年秋天,我能够将同一个应用程序的早期版本分发给相同的测试人员,没有任何问题,也没有权利列表。除了升级Xcode之外,我不确定发生了什么变化。

任何人都可以提供任何见解或看到我做错了吗?

[我也在Apple的开发者论坛上发布了此消息,并将在此处重新发布任何解决方案。]

3 个答案:

答案 0 :(得分:1)

* .ipa文件应该已包含配置文件。如果使用zip实用程序,则可以从Windows计算机轻松查看。该文件只是一个具有不同扩展名的zip存档。

应用程序上的设备是否在正确版本的iOS上?

Setting > General > Profiles中的设备上,您可以看到已安装的所有配置文件列表,以消除该问题。使用添加新设备时创建的每个新证书,您将获得多个副本。删除所有配置文件并检查是否添加了最新的配置文件并没有什么坏处。

进行构建时,在构建结果中右键单击并选择Open These Latest Results as Transcript Text File,然后搜索CodeSign,它将显示该步骤的输出,您应该清楚地看到使用了哪个配置文件。您还可以搜索Entitlements.plist检查使用的路径,然后查看该文件。

你说你删除了所有的行。我没有Can be debugged条目,但我确实有 application-identifierkeychain-access-group听起来与代码签名相关。这是您可以尝试的文件的纯文本版本;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!--- Required entitlements (in most cases shouldn't be changed) --->
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>

    <!--- Custom entitlements below --->


</dict>
</plist>

如果出现任何错误,这些是Apple在准备分发版本时建议的步骤;

  1. 选择目标并打开构建设置检查器。确认你是 在分发配置中。
  2. 删除代码签名标识:iOS分发:COMPANYNAME
  3. 在Xcode Build Menu中,选择Clean all Targets。
  4. 使用Finder删除Xcode项目中的所有现有构建目录。
  5. 重新启动Xcode并打开您的项目。
  6. 在Target Build Settings Inspector中重新输入代码签名标识iOS Distribution:COMPANYNAME。
  7. 重建您的项目。
  8. 希望有些帮助或激发啊哈!时刻。

答案 1 :(得分:1)

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

中的详细说明

答案 2 :(得分:0)

  1. 转到开发者网站并登录。
  2. 在“配置文件”下,选择“开发”。
  3. 双击打开您的配置文件。
  4. 您会看到"App ID: somenameyouwrote(com.somenameyouwrote)"
  5. 准确记下括号之间的内容,即"com.somenameyouwrote"
  6. 在XCode中打开.plist文件。
  7. "bundle identifier:"下输入您在步骤5中记下的内容。
  8. 在XCode中点击"Targets"旁边的箭头,然后双击将带有你的ap名称的目标。
  9. 在打开的目标信息窗口中,确保选中"Build"
  10. 打开"Code Signing Identity",然后选择"Any iOS"
  11. "Any iOS"的右侧,选择列出的Ap标识符与您在plist中写的匹配的个人资料。
  12. BAM!沮丧!