提交 Mac Catalyst 应用程序时出现 "Invalid 'com.apple.application-identifier' entitlement value" 错误 ITMS-90283

ERROR ITMS-90283 with "Invalid 'com.apple.application-identifier' entitlement value" when submitting Mac Catalyst app

我第一次尝试提交 Mac Catalyst 应用程序,但上传一直失败并显示以下错误消息:

ERROR ITMS-90283: "Invalid Provisioning Profile. The provisioning profile included in the bundle maccatalyst.com.arlomedia.setlistmaker [maccatalyst.com.arlomedia.setlistmaker.pkg/Payload/SetListMaker.app] is invalid. [Invalid 'com.apple.application-identifier' entitlement value.] For more information, visit the macOS Developer Portal."

如果我手动或自动签署应用程序,就会发生这种情况。通过手动签名,我有一个新的 macOS App Store 配置文件,我使用关联的 iOS 应用程序 ID 创建为 Mac Catalyst 配置文件。这在供应门户中显示为有效,我可以使用此配置文件构建(存档)应用程序 selected:

当我在 Xcode 组织者中完成提交过程时,我每次都必须 "Import" 配置文件(我下载了配置文件,只是 select 下载的文件在这里),这很奇怪:

但是在我 select 文件之后,我可以点击它的信息图标,一切看起来都是正确的:

然后我继续上传,当进度条走到尽头时出现错误,提交失败

错误消息表明应用程序标识符有问题,但我已经在我能找到的所有地方进行了检查,它看起来是正确的。我使用的是自动派生的包 ID,它在我的 iOS 包 ID 前加上 "maccatalyst" 前缀。在某些出现这种情况的地方,ID 还带有供应门户中应用程序标识符记录中的应用程序 ID 前缀作为前缀。上面的截图显示了App ID的最后一个字母被截掉了,但我认为那只是Xcode中的显示;如果我打开配置文件,则会列出完整 ID。

我同时在开发另一个应用程序,并且能够成功提交。我打开了两个项目的存档 .app 文件并比较了嵌入式配置文件,唯一的区别是我所期望的,比如应用程序名称和导出时间。应用程序标识符和捆绑包 ID 的格式相同,并带有正确的应用程序前缀。我还比较了两个应用程序的 info.plist 文件,也没有发现任何显着差异。另一个应用程序还要求我在提交过程中 select 个人资料,所以这似乎不是问题(尽管我 iOS 提交时,个人资料名称会自动出现)。

当我打开自动签名时,一些上传步骤被跳过,但我在上传结束时收到相同的错误消息。如果我在 Xcode 管理器中使用验证应用程序按钮而不是分发应用程序按钮,我将执行相同的步骤并收到相同的错误消息。

我已经比较了两个应用程序的应用程序 ID 和配置文件的设置、签名设置、构建设置、iTunes Connect 中的应用程序信息页面……所有设置都是相同的。有谁知道我还应该检查什么?

我找到了这个文档:

Technical Q&A QA1710: Why do I get an "Invalid application-identifier Entitlement" error?

它指出:

In modern versions of Xcode, you don't need to supply a value for this entitlement yourself, so the error can be avoided by simply removing the application identifier entitlement from your custom Entitlements.plist.

Xcode builds the application identifier entitlement for you based on the Bundle Identifier property defined in your Xcode project's Target > Info tab, so setting the correct Bundle Identifier in Xcode is imperative.

我没有这些问题,但也许它会帮助其他人收到此错误。

我终于通过放弃自动派生的 "maccatalyst" 包 ID 并使用自定义包 ID 来实现它。以下是我采取的步骤:

  1. 在 Xcode 中,关闭 "Derive Mac Catalyst Product Bundle Identifier" 构建设置。
  2. 编辑 "Product Bundle Identifier" 构建设置并为 macOS 平台添加单独的包 ID。 (屏幕截图 1)
  3. 在 iOS 配置门户中,编辑关联 iOS 应用程序的应用程序 ID 并关闭 Mac Catalyst 选项。
  4. 为 Mac 版本的应用程序创建一个新的应用程序 ID,并输入新的 macOS 包 ID。
  5. 使用新的 App ID 创建新的开发和分发配置文件。创建配置文件时,这些必须是 Mac Catalyst,而不是 Mac 配置文件。 Xcode 在验证时只接受 Mac Catalyst 配置文件。 (屏幕截图 2)
  6. 在 App Store Connect 中,编辑 macOS 应用记录并将捆绑 ID 从 maccatalyst ID 更改为自定义 ID。这仍然是可编辑的,因为我还没有成功上传二进制文件。

我的新配置文件现在在 Xcode 的“签名和功能”选项卡上显示为“合格”,但在提交时它们不会显示为验证页面上的选项。但是,与我的原始设置一样,我可以单击此处的“导入配置文件”选项,然后 select 从配置门户下载文件。

请注意,如果您不想通用购买,则可以使用此设置。如果确实需要,则需要使用与 iOS 应用程序相同的包 ID,并且您可能需要等到 Xcode 11.4 发布才能提交具有该设置的应用程序。我不确定,但我确定您不能使用 Xcode 11.4 beta 提交应用程序,因为我试过了。 (屏幕截图 3)

我没有尝试使用自定义捆绑 ID 设置进行自动签名。我认为这会起作用,因为我认为问题不知何故与自动派生的捆绑包 ID 有关。即将推出的 Xcode 11.4 和通用购买功能基本上已弃用该功能,因此我怀疑 Apple 端的更改破坏了对捆绑包 ID 样式的验证,可能仅在有限的情况下影响了我的应用程序,因为某些我和 Apple 都无法识别的因素。

自定义捆绑 ID 设置:

"Profile is not a 'Mac Catalyst App Store' profile":

无法从 Xcode 测试版提交: