权限清单(Entitlements.plist)创建不正确。

14

从苹果文档中了解到,我需要创建一个特定分发的应用程序,并且为此我需要entitlements.plist文件。 当我创建一个新的entitlement时,没有“get-task-allow”值,所以我手动添加了它..这样做对吗? 最终Entitlements.plist 文件如下:

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

最新安装版(xcode_3.2.4_and_ios_sdk_4.1.dmg)也遇到了同样的问题。 - Guillaume
我有同样的问题。目前还没有找到解决方案。 - ultravelocity
5个回答

9
在XCode中,尝试点击“新建文件”,然后在向导中选择“代码签名”。选择“Entitlements”文件类型。只需将其命名为“Entitlements.plist”。确保对于adhoc分发未选中任务允许。这就是你需要做的一切,无需“自己制作”:)(适用于Xcode 3.2.2)
更新: 自从Xcode 4.2以来,“Entitlements.plist”已从“新建文件”菜单中移除。现在您可以在“项目目标>摘要”下找到它,位于页面底部。

1
谢谢 Ricky,我确实这样做了,但是关键字 get-task-allow 没有出现,出现了 application-identifier 和 keychain-access-groups... 所以我需要将它们删除,只留下 get-task-allow(false)。 我不知道如何设置为 true,我已经添加了该关键字,选择了布尔值并取消选中,但代码仍然是 true... - ghiboz
听起来真的很奇怪。我尝试了几种设置组合,想看看能否让新的 entitlements.plist 看起来像那样,但我失败了。你在钥匙串中安装了开发者密钥吗?你是否向 info.plist 文件添加了任何内容或在项目设置中进行了额外的设置操作? - RickiG
是的,我在钥匙串中安装了开发者密钥。我是一名私人开发者,这对我来说也很奇怪。我尝试手动更改.plist 文件中唯一的 get-task-allow 密钥为 false,没有其他操作...谢谢,Ricky - ghiboz
3
欢迎,但我已经没有更多的想法了。如果有用的话,这是一个有效的 entitlements.plist 文件的内容。您可以在文本编辑器中编辑您的文件,并将此内容粘贴进去:<?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/> </dict> </plist> - RickiG

5
你可以这样做。在XCode中选择你的Entitlements.plist文件,然后在主菜单中选择:View / Property List Type / iPhone Entitlements plist。然后你的密钥可以从下拉列表中选择,并将被称为“Can be debugged”(尽我所知 - 这应该是此列表中唯一可用的密钥)。

2
这就是你要找的答案。"Can be debugged" 是 get-task-allow 的“友好”键(右键单击,显示原始键/值可以确认这一点)。 - ySgPjx

3
在XCode 4.2中,授权文件已经被移动。现在它是项目根目录下“Targets”部分的一部分,在“Summary”项目列表的底部。

1

我曾经遇到过同样的问题。我手动创建了一个新行"get-task-allow",将类型更改为布尔型,并且必须将其设置为true才能获取设备令牌。


0

我也遇到了同样的问题,与企业级配置有关。 经过大量的谷歌搜索,我找到了this。提取ipa文件,将Entitlements.plist复制到Payload文件夹中,并使用this中的方法进行代码签名。除此之外,没有做任何其他操作,它开始正常安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接