【问题标题】:The application-identifier entitlement is not formatted correctly - iOS Xcode 4应用程序标识符权利格式不正确 - iOS Xcode 4
【发布时间】:2011-09-16 18:19:15
【问题描述】:

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

“应用标识符授权格式不正确...”

谷歌搜索指向 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>

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

【问题讨论】:

    标签: iphone ios entitlements


    【解决方案1】:

    在 Xcode 4 中,您的权利文件不应包含应用程序标识符。仅在您的目标 -> 摘要选项卡上。此外,对于 AppStore 提交,get-task-allow 应设置为 False。

    要修复,我会删除您当前的 entitlements.plist 文件并使用 File -> New -> New File 创建一个新文件。只需使用键 get-task-allow = FALSE 并尝试。确保将应用程序标识符放在 Target -> Summary 选项卡上。

    【讨论】:

    • 好的,所以我将 get-task-allow 设置为 false。 Target->Summary 是完整的包标识符。现在我得到同样的错误,但只是引用 J1234567885.* ?
    • 您是否尝试先删除实际的授权文件,然后再创建一个新的?
    【解决方案2】:

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

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

    构建、存档、验证、提交到 iTunes Connect。

    【讨论】:

    • 我会在 iTunesConnect 上检查您的应用程序的二进制详细信息。对于发布版本,您需要将其设置为 get-task-allow = FALSE。
    【解决方案3】:

    我遇到了 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 变量作为它们的值。有关包含应用程序标识符和钥匙串访问组的信息,请参见下面的 sn-p。 (不过,我不相信后者与我遇到的问题有任何关系)

    <?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 进行分发。

    【讨论】:

      【解决方案4】:

      在我的情况下,这是由于对分发配置文件 (com.mycompany.*) 使用通配符应用程序 ID 造成的。将其替换为使用绝对应用程序 ID 的配置文件解决了该问题。

      【讨论】:

        猜你喜欢
        • 2017-01-30
        • 1970-01-01
        • 2015-04-06
        • 2017-07-27
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多