我已迁移到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>
我已经更改了上面的标识符,但只是为了给你一个想法...
答案 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;摘要标签。