用于Ad Hoc分发的XCode 4的iPhone Entitlements问题

时间:2011-03-27 13:25:09

标签: iphone code-signing adhoc entitlements

我重新阅读了有关Ad Hoc分发的所有文档和帖子,但仍有问题。如果我尝试“无线”分发(使用Safari下载.plist和.ipa文件),应用程序开始下载,图标被正确绘制,名称从“正在安装...”更改,但当其大约90%完成时得到“无法下载...”提醒。

如果我使用iTunes方法转移应用程序,我会得到'应用程序“xx”未安装在iPhone“xx”上,因为权利不正确。'

Q1:我已经读过你不再需要单独添加.mobileprovision文件,因为XCode(我使用的是4.0.1)将它添加到包中 - 这是真的吗?

Q2:当我在Safari(在iPhone上)下载'.mobileprovision时,它只是将其显示为文本。这是我的问题或不相关的症状吗?

问题3:这个问题是否与Entitlements.plist有关?我找不到Apple或任何博客的任何文档,这些文档与我在使用XCode 4.0.1编辑此文件时看到的内容有关。如果我按照说明(新 - >新文件 - >代码签名 - >权利),我会得到一个只有“可以调试”密钥的默认文件。我已经尝试将此设置为NO,添加一个get-task-allow键(替换现有的 - 可能是可调试的是同一个键?)添加我的应用程序标识符,并添加一个带有上述两个键的iPhone Entitlements Dictionary(根据Apple的文档)。

问题4:试图让权利和代码签名工作的iPhone开发者的自杀率是多少?

要减少我在类似问题上看过的建议: 我的Code Signing Entitlements设置为我的Entitlements.plist for Distribution and Release。 我尝试重新启动XCode,重建,存档等 我试过重启iPhone 我已经回到了iPhone

更新:在XCode 4.0.1中,编辑Entitlements.plist时会有一个菜单选项(编辑器 - >显示原始键和值),这会将键从“可以调试”切换到“获取任务” -ALLOW'

7 个答案:

答案 0 :(得分:13)

权利文件应为:

<?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>
         <key>get-task-allow</key>
           <false/>
         <key>application-identifier</key>
           <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
         <key>keychain-access-groups</key>
           <array>
             <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
           </array>
</dict>
</plist>

这也适用于无线。
为什么地球上默认的没有这一切只是苹果可以回答的问题。 我无法在TextEdit中编辑如何编辑Xcode中的plist原始文本。

答案 1 :(得分:6)

我刚刚写了一篇博客文章,概述了在Xcode 4中成功进行特殊发布的所有步骤,这可能会有所帮助。 http://www.musicalgeometry.com/?p=1237

答案 2 :(得分:6)

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

中的详细说明

答案 3 :(得分:1)

应在项目中添加Entitlements.plist,其中应该只有get-task-allow个键。

使用开发者资料在设备上进行调试时,应该检查

使用Ad-HocDistribution个人资料构建时,应该取消选中

关于第四季度:如果你喜欢,你可以通过这样做来增加它...但我不推荐它。

答案 4 :(得分:1)

如果右键单击项目导航器中的plist文件,并选择“打开为”,然后选择“源代码”,则可以将其编辑为普通源。

答案 5 :(得分:1)

也许他们在xcode4中制作了较短版本的Entitlements.plist。默认的Entitlements.plist不包含'application-identifier'和'keychain-access-groups'键,但是如果你通过'ASCII Property editor'更改'Can be debugged'键的值,它确实改变了后台中'get-task-allow'键的值...

答案 6 :(得分:1)

我尝试将权利参数设置为“打开”或“关闭”,重新下载我记忆中使用过的临时临时,并尝试了数百个其他组合。直到......我都没有为我工作过。我去了临时门户并重新创建了一个新的临时。

真正让我熬夜到凌晨4点并且浪费了我没有的时间是我如何创建临时临时的。在Apple的iOS临时门户页面上,如果单击左侧栏中的“配置”,您将看到4个选项卡:“开发”,“分发”和其他两个选项卡。我以前使用在“开发”选项卡下创建的临时,并添加了所有测试用户的手机UUID。这对我来说已经有好几年了,直到xCode 4出现,而且我愚蠢到跳得太快了。每次xCode更新时,Apple工程师总是给我一个惊喜的“午夜”派对。他们会等待足够长的时间让我忘记这段经历并释放下一个经验。

对我有用的解决方案是在分发标签下创建临时。在此处创建新临时时,您可以选择“ad hoc”作为“分配方法”。在xCode项目和目标构建设置上使用此临时,并在权利上关闭“可以调试”后,我可以通过iTunes或通过OTA安装。我希望这个提示可以帮助别人保留一些白发。