应用程序标识符权利格式不正确 - iOS Xcode 4

时间:2011-06-16 21:38:57

标签: iphone ios entitlements

我已迁移到Xcode 4,无法再将我的应用程序提交到App Store。每次我通过Xcode或Application Loader提交时,都会收到同样的错误:

“应用程序标识符权利格式不正确...”

使用Google搜索指向Entitlements.plist文件,其中application-identifier键应与我的应用程序包ID匹配:例如J1234567885.com.domain.appName

事情就是这样。我的app.plist和Entitlements.plist中的包标识符是相同的!我究竟做错了什么?这是我的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>J1234567885.com.domain.appName</string>
    <key>get-task-allow</key>
    <true/>
</dict>
</plist>

我已经更改了上面的标识符,但只是为了给你一个想法...

4 个答案:

答案 0 :(得分:9)

我遇到了mootymoots描述的相同问题。我通过向Entitlements.plist添加一些额外的参数解决了这个问题。

我正在使用TestFlight将应用部署到测试组,因此我认为使用Xcode 4密切关注TestFlight对generating an IAP的说明非常重要。完全删除Entitlements.plist似乎是一个黑客攻击而不是解决方案。

当我使用“新建文件...”向导创建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>
  <true/>
</dict>
</plist>

当我尝试创建存档时,它抛出了“应用程序标识符权利格式不正确...”警告。

通过一些谷歌搜索,我意识到plist需要两个额外的参数,其中Xcode变量作为它们的值。请参阅下面的代码段,了解是否包含了application-identifier和keychain-access-groups。 (我不相信后者与我遇到的问题有任何关系)

<?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>

一旦我添加了这些参数,存档就会停止发出警告,我可以使用TestFlight进行分发。

答案 1 :(得分:6)

现在在Xcode 4+中你不需要一个Entitlements.plist用于你的Release版本(或者至少,Xcode 4做了一些奇怪的事情,Xcode 3没有)。

无论如何,为了解决我的问题,我只是从Build Settings中“Code Signing Entitlements”下的release参数中删除了对Entitlements.plist的引用。

构建,存档,验证,提交至iTunes Connect。

答案 2 :(得分:1)

在我的情况下,这是因为使用通配符应用程序ID作为分发配置文件(com.mycompany。*)。使用绝对app id用配置文件替换它解决了这个问题。

答案 3 :(得分:0)

在Xcode 4中,您的权利文件不应包含应用程序标识符。仅限您的目标 - &gt;摘要标签。此外,对于AppStore提交,应将get-task-allow设置为False。

要修复,我会删除您当前的entitlements.plist文件并使用File创建一个新文件 - &gt;新 - &gt;新文件。只需使用密钥get-task-allow = FALSE并尝试即可。确保将您的应用程序标识符放在目标上 - &gt;摘要标签。