3

我需要将我的应用程序提交到 App Store。所以在我这样做之前,我使用Xcode's验证过程验证了我的应用程序。

提交验证时,需要将entitlement文件添加到项目中。我无法创建这个文件,所以我entitlement从另一个项目中拖动了一个文件并包含在我的文件中。该entitlement文件中不包含任何数据(它是一个空文件)。但是,当我通过 Xcode 将其提交验证时,验证成功通过。

我想知道的是,entitlement文件有什么作用(因为我的项目中包含的文件是空的),我的应用程序是否会因为从另一个项目entitlement中拖放文件而被 appStore 拒绝?entitlement

4

1 回答 1

6

根据苹果参考

权利赋予您的应用程序特定的功能或安全权限。

具体来说

设置权利值以启用 iCloud、推送通知和 App Sandbox(App Sandbox 仅适用于 Mac OS X)。每个权利都有一个默认值,在大多数情况下会禁用与权利关联的功能。设置权利时,您将通过提供适当的键值对来覆盖默认值

  1. 授权文件只是一个 plist 文件,您可以将其视为另一个设置文件,其中包含一些高级配置,并且对于 xcode 4.x 之前的临时构建进行代码签名至关重要

  2. 空的权利文件是有效的,因为 XCode 将把空的权利文件视为您想要使用 Apple 参考指定的所有默认值。在您的应用程序项目中保留一个授权文件不会造成任何损害,除非您指定您的应用程序不具备的功能,即 icloud 存储。如果您不需要本地分发,最好只删除该文件。:)

根据Apple Technical Note TN2250(我建议您摆脱授权文件)

如果您在 Target > Build Settings 中定义自定义代码签名权利文件,您可以尝试完全删除该配置并重新构建/重新提交。通常情况下,代码签名权利的定义是不必要的。如果您的应用程序使用自定义钥匙串访问共享或 iCloud,您只需指定自定义代码签名权利文件。否则,请从 Xcode 项目的 Target > Build Settings 上的所有构建配置中删除 Code Signing Entitlements 配置,重新构建并重新尝试提交/验证。

不必要地指定代码签名权利文件是最可能导致错误的原因,例如 -

应用程序“Foo”未安装在 iPhone“foobar 的 iPhone”上,因为权利无效。

在大多数情况下,上面看到的那些权利应该是您应用程序签名中的唯一权利。使用 Apple Push Notification 或 iCloud 的应用程序将添加一些权利。否则,超出上面列出的权利,或者这些权利的拼写错误或格式版本可能会导致“失败的代码验证”阻止上传到商店,或者对于 Ad Hoc 构建产生 iTunes 安装错误“未安装应用程序因为权利是无效的”。

请参阅参考

于 2012-04-16T01:24:15.643 回答