配置文件与应用程序标识符权利的权利文件的值不匹配
Profile doesn't match the entitlements file's value for the application-identifier entitlement
我正在尝试将应用程序上传到应用程序商店,但在包含证书的页面上出现此错误。据我所知,我已经更改了字段以便它们匹配,但我遗漏了一些东西。
如有任何帮助,我们将不胜感激。
使用您在开发者帐户中为应用 ID 启用的选项交叉检查应用中的功能。
请检查您的应用程序所需的应用程序功能,例如 应用程序购买、推送通知、Inter App 音频、Siri 套件 等
这是此类错误的唯一原因。
确保在您的 App id 中打开上述标志。
大多数情况下发生在你没有配置推送通知,在你开发的App ID中的App购买中。
我不确定为什么会修复它,但我进入了目标的“功能”选项卡,打开了 iCloud,尝试进行存档构建,但失败了,我再次关闭 iCloud,尝试进行存档构建成功了,之后又能自动解析证书了。
我进入目标的功能选项卡,打开钥匙串共享,它开始工作
可能缺少 {project}.entitlements 文件。执行@samkass 提到的操作将自动生成文件并且它会工作。
所以基本上只需转到功能选项卡,启用任何内容,然后禁用它。
您创建的应用有一个不正确的 application-identifier
值,不符合配置文件的预期。团队 2ABCDEFG
的 appID com.example.foo
证书需要 application-identifier: 2ABCDEFG.com.example.foo
,您的应用声明其 appID 为 com.example.foo
,但 application-identifier
不匹配,要么您使用了错误的团队前缀,要么您的 bundleID 配置错误。
就我而言,我正在使用构建方案来构建产品应用程序和质量检查应用程序。 com.example.foo
用于生产,com.example.foo.qa
用于质量检查。
我已将 Info.plist
中的 bundleIdentifier 设置为 $(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX)
,这在模拟器和具有不同应用程序的设备上效果很好,但是,当应用程序生成其 application-identifer
在存档阶段,它不能读取由 Info.plist.
生成的 bundleIdentifier
为了补救这种情况,我编辑了 FooProject.xcodeproj/project.pbxproj
(使用文本编辑器),将我的 QA buildSettings PRODUCT_BUNDLE_IDENTIFIER
更改为 com.example.foo.qa
您可以查看 Apple's Technical Q&A and this page 以了解他们对解决此问题的深入研究。在您 运行 导出的应用程序上执行以下操作后:
codesign -d --entitlements :- ./Payload/myApp.app
看看 application-identifier
你的应用程序是用什么构建的,应该很快就会意识到你做错了什么。
我在 Google 搜索中没有找到该页面,因为他们实际上并没有使用错误消息中的短语或通过其全名调用应用程序标识符,而是说应用程序 ID .
此外,此问题的解决方案不是生成具有 application-identifier
权利的新配置文件,它确实具有该权利,但是,配置文件中的值以及您的应用程序具有匹配。
我尝试了此处答案中列出的几个选项,但 none 有所帮助,但是,关闭和打开复选框 "Automatically manage signing" 解决了问题。
将 iCloud 开关更改为开启、构建和禁用 iCloud,消除了以下错误:
Profile doesn't match the entitlements file's values for the application-identifier and keychain-access-groups entitlements.
右键单击 Finder -> 转到文件夹...
~/Library/MobileDevice/Provisioning
对于Xcode 11
~/Library/MobileDevice/Provisioning Profiles/
删除所有配置文件,完成。
在 Xcode 10 中,我通过将权利文件移动到 Project Navigator 中的正确文件夹使其正常工作。我没有权利文件,但我通过在功能选项卡上切换功能设法获得了一个。
我遇到了同样的错误,上面的 none 解决方案解决了我的问题。
对我有用的是将 "Entitlements.plist" 文件中的 "Can be debugged" 设置从 "NO" 更改为 "YES."
TL;DR:检查您的 App ID 并确保服务与您的目标中的相匹配。
发生在我身上的事情是,我让 Xcode 10.1 帮助我创建了一个 App ID,然后,我 运行 进入了这里描述的问题。 (我在 iTunesConnect 中创建应用程序时选择了 whildcard 应用程序 ID,所以我什至没有意识到这已经完成。)当我打开 iOS 开发者门户时,新应用程序 ID 自动启用了 Game Center 和 In App Purchase .
由于我无法在您的 Target -> Capabilities
中启用 Game Center,我启用了 In App Purchase,然后我的应用程序可以被签名和上传。
在我的例子中,问题如下:用于构建步骤的配置文件是为不同的应用程序 ID 创建的,而不是用于导出步骤的配置文件。
因此请确保您在构建和导出步骤中使用相同的配置文件。
在 Xcode 11 中,当您的项目不存在 .entitlement 文件时,可能会发生这种情况。解决方案是通过单击 'Signing & Capabilities' 下的“+ 能力”(这会导致创建 .entitlement 文件)来添加任何随机能力,然后删除该能力。这也会让您自动提供证书。
当我们遇到同样的问题时,我们尝试了上述所有方法,但 none 行得通。
对我们有用的是更改包标识符,使其与之前的标识符不同,例如 "com.name.App" 到 "com.name.App2";让 xcode 尝试 fetch/create 配置文件,然后有机会恢复到原来的配置文件。
从 Apple 开发者论坛上的这个帖子中得到这个想法 - https://forums.developer.apple.com/thread/114539
对我来说,诀窍是
- add/remove 目标的功能(在我的例子中是 Widget);
- 确保创建的授权文件列在构建设置中;
- 并将值为 "development" 的 "APS Environemnt" 键添加到 entitlemenets 文件。
我最近在尝试创建重复目标后看到了此页面 - none 的建议对我有用。进一步的调查,以及一些麻烦,最终让我仔细检查了我的应用程序的构建设置,试图找出问题所在。
事实证明,我的项目仍然指向原始目标的权利文件,而不是拥有自己的权利文件。为了解决这个问题,我导航到 Finder 中的原始权利文件(例如 ${SRCROOT}/MyProject/Entitlements/TargetName.entitlements),在同一文件夹中创建了一个副本,然后将其重命名(例如 NewTargetName.entitlements).
然后,我打开了新的权利文件并更改了应用程序标识符字段以匹配新目标的包标识符的结尾(例如 ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).
最后,我将构建设置中的 'Code Signing Entitlements' 字段更新为我的权利文件的路径(对我来说,这类似于 ${SRCROOT}/MyProject/Entitlements/TargetName.entitlements).
我返回到“签名和功能”选项卡,看,问题已解决。希望有人觉得这有用。
转到 Xcode 的 Info 选项卡并更改 Bundle identifier 字段 - 更改应用程序名称后它没有即使我在“常规”选项卡上更改了“捆绑包标识符”,也会发生变化。上面的修复对我不起作用,但这个修复立即起作用了。
对我有用的是我在 XCode 11 中制作了存档,并在其中上传了 Xcode 12 beta。
我在 Xcode 12 beta 3 (app submissions started today) 中的一个全新应用程序中遇到了这个问题。
Xcode 开启了“自动管理签名”。但是,“签名证书”中显示的团队 ID 与 iTunes Connect 网站中显示的团队 ID 不匹配。这是阻止应用程序上传的根本原因。
我是如何修复它的:
- 我为 App Store 分发手动创建了配置文件
- 在 Xcode 中,我在首选项 -> 帐户中点击了“下载手动配置文件”
- 然后,我关闭了“自动管理签名”。
- 在下拉列表中选择配置文件后,正确的团队 ID 出现在“签名证书”下
我 运行 在设置运行 exportArchive cmd 并上传到 AppStore 的 Gitlab 管道时遇到了同样的问题。我能够通过将构建设置中的 DEVELOPMENT_TEAM 更改为在签名和证书中选择的同一团队来使其工作。
因为之前它被设置为空白,默认情况下使用另一个 DEV TEAM id,这是不正确的并且不匹配并且它抱怨“application-identifier”= 12331232.com.bannana.apples.peach 不匹配.这让我设置了正确的开发团队并且成功了。
Xcode版本:版本 11.3.1
我希望这对某人有所帮助。
我们的设置
多个目标:
- sub-apps
- 观看
- 应用剪辑
- 今日小部件
...并使用 iCloud。
打开和关闭 iCloud 对我们来说不是一个选项。我们已经在生产中使用它,而不是乱用它......我得到了原始问题的信息,并且在某些时候也得到了这种变化:
Profile doesn't match the entitlements file's values for the
application-identifier and keychain-access-groups entitlements.
解决方案
这里的其他回复提示,我们确保所有目标都有一个 .entitlements
文件。如果目标有 none 我们创建一个空的像这样:
<?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/>
</plist>
...并将 Build Settings
中的目标 Code Signing Entitlement
指向空的 .entitlements
文件。
已解决!
删除位于 ~/Library/MobileDevice/Provisioning Profiles/
中的所有配置文件
我正在开发一个带有使用 --dart-define 命令的 Flavors 的 Flutter 应用程序。
great article.
给我很大的启发
但是我在部署时遇到了这个 'application-identifier' 问题。
我尝试了很多选择。
This solution 是对我有用的那个。
它与@n8tr 的 非常接近,但不同之处在于 'instead'.
要恢复,只需在构建设置中的打包下将产品包标识符设置为 your.id.here$(DEFINEEXAMPLE_APP_SUFFIX)
,而不是 Info.plist.
中的
在我的例子中,我必须输入:
<key>aps-environment</key>
<string>development</string>
在扩展名为 .entitlements
的所有文件中
在我的例子中,我使用 --dart-define 从一个代码库创建多个应用程序,并在 flutter 应用程序中构建风格。
我什么都做对了 但只有一个
正如上面评论中提到的
我已经在构建设置中写了app_suffix (PRODUCT_BUNDLE_IDENTIFIER = com.flutter.myapp$(APP_SUFFIX))。
但我还在信息选项卡中将 app_suffix 写入了 Bundle 标识符。
我有同样的问题,因为我在 entitlements
文件中的 iCloud Key-Value Store
中有一个错误的值。我设置了以下值并解决了错误:
iCloud Key-Value Store = $(TeamIdentifierPrefix)$(CFBundleIdentifier)
看看是否添加了“使用 Apple 登录” 功能以及“后台模式”和“推送通知”等其他功能!
就我而言,它就在那里。
因此在删除 “使用 Apple 登录” 功能后,它已从“项目.entitlements 文件和配置文件立即同步。
我正在尝试将应用程序上传到应用程序商店,但在包含证书的页面上出现此错误。据我所知,我已经更改了字段以便它们匹配,但我遗漏了一些东西。
如有任何帮助,我们将不胜感激。
使用您在开发者帐户中为应用 ID 启用的选项交叉检查应用中的功能。
请检查您的应用程序所需的应用程序功能,例如 应用程序购买、推送通知、Inter App 音频、Siri 套件 等
这是此类错误的唯一原因。
确保在您的 App id 中打开上述标志。
大多数情况下发生在你没有配置推送通知,在你开发的App ID中的App购买中。
我不确定为什么会修复它,但我进入了目标的“功能”选项卡,打开了 iCloud,尝试进行存档构建,但失败了,我再次关闭 iCloud,尝试进行存档构建成功了,之后又能自动解析证书了。
我进入目标的功能选项卡,打开钥匙串共享,它开始工作
可能缺少 {project}.entitlements 文件。执行@samkass 提到的操作将自动生成文件并且它会工作。 所以基本上只需转到功能选项卡,启用任何内容,然后禁用它。
您创建的应用有一个不正确的 application-identifier
值,不符合配置文件的预期。团队 2ABCDEFG
的 appID com.example.foo
证书需要 application-identifier: 2ABCDEFG.com.example.foo
,您的应用声明其 appID 为 com.example.foo
,但 application-identifier
不匹配,要么您使用了错误的团队前缀,要么您的 bundleID 配置错误。
就我而言,我正在使用构建方案来构建产品应用程序和质量检查应用程序。 com.example.foo
用于生产,com.example.foo.qa
用于质量检查。
我已将 Info.plist
中的 bundleIdentifier 设置为 $(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX)
,这在模拟器和具有不同应用程序的设备上效果很好,但是,当应用程序生成其 application-identifer
在存档阶段,它不能读取由 Info.plist.
为了补救这种情况,我编辑了 FooProject.xcodeproj/project.pbxproj
(使用文本编辑器),将我的 QA buildSettings PRODUCT_BUNDLE_IDENTIFIER
更改为 com.example.foo.qa
您可以查看 Apple's Technical Q&A and this page 以了解他们对解决此问题的深入研究。在您 运行 导出的应用程序上执行以下操作后:
codesign -d --entitlements :- ./Payload/myApp.app
看看 application-identifier
你的应用程序是用什么构建的,应该很快就会意识到你做错了什么。
我在 Google 搜索中没有找到该页面,因为他们实际上并没有使用错误消息中的短语或通过其全名调用应用程序标识符,而是说应用程序 ID .
此外,此问题的解决方案不是生成具有 application-identifier
权利的新配置文件,它确实具有该权利,但是,配置文件中的值以及您的应用程序具有匹配。
我尝试了此处答案中列出的几个选项,但 none 有所帮助,但是,关闭和打开复选框 "Automatically manage signing" 解决了问题。
将 iCloud 开关更改为开启、构建和禁用 iCloud,消除了以下错误:
Profile doesn't match the entitlements file's values for the application-identifier and keychain-access-groups entitlements.
右键单击 Finder -> 转到文件夹...
~/Library/MobileDevice/Provisioning
对于Xcode 11
~/Library/MobileDevice/Provisioning Profiles/
删除所有配置文件,完成。
在 Xcode 10 中,我通过将权利文件移动到 Project Navigator 中的正确文件夹使其正常工作。我没有权利文件,但我通过在功能选项卡上切换功能设法获得了一个。
我遇到了同样的错误,上面的 none 解决方案解决了我的问题。
对我有用的是将 "Entitlements.plist" 文件中的 "Can be debugged" 设置从 "NO" 更改为 "YES."
TL;DR:检查您的 App ID 并确保服务与您的目标中的相匹配。
发生在我身上的事情是,我让 Xcode 10.1 帮助我创建了一个 App ID,然后,我 运行 进入了这里描述的问题。 (我在 iTunesConnect 中创建应用程序时选择了 whildcard 应用程序 ID,所以我什至没有意识到这已经完成。)当我打开 iOS 开发者门户时,新应用程序 ID 自动启用了 Game Center 和 In App Purchase .
由于我无法在您的 Target -> Capabilities
中启用 Game Center,我启用了 In App Purchase,然后我的应用程序可以被签名和上传。
在我的例子中,问题如下:用于构建步骤的配置文件是为不同的应用程序 ID 创建的,而不是用于导出步骤的配置文件。
因此请确保您在构建和导出步骤中使用相同的配置文件。
在 Xcode 11 中,当您的项目不存在 .entitlement 文件时,可能会发生这种情况。解决方案是通过单击 'Signing & Capabilities' 下的“+ 能力”(这会导致创建 .entitlement 文件)来添加任何随机能力,然后删除该能力。这也会让您自动提供证书。
当我们遇到同样的问题时,我们尝试了上述所有方法,但 none 行得通。
对我们有用的是更改包标识符,使其与之前的标识符不同,例如 "com.name.App" 到 "com.name.App2";让 xcode 尝试 fetch/create 配置文件,然后有机会恢复到原来的配置文件。
从 Apple 开发者论坛上的这个帖子中得到这个想法 - https://forums.developer.apple.com/thread/114539
对我来说,诀窍是
- add/remove 目标的功能(在我的例子中是 Widget);
- 确保创建的授权文件列在构建设置中;
- 并将值为 "development" 的 "APS Environemnt" 键添加到 entitlemenets 文件。
我最近在尝试创建重复目标后看到了此页面 - none 的建议对我有用。进一步的调查,以及一些麻烦,最终让我仔细检查了我的应用程序的构建设置,试图找出问题所在。
事实证明,我的项目仍然指向原始目标的权利文件,而不是拥有自己的权利文件。为了解决这个问题,我导航到 Finder 中的原始权利文件(例如 ${SRCROOT}/MyProject/Entitlements/TargetName.entitlements),在同一文件夹中创建了一个副本,然后将其重命名(例如 NewTargetName.entitlements).
然后,我打开了新的权利文件并更改了应用程序标识符字段以匹配新目标的包标识符的结尾(例如 ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).
最后,我将构建设置中的 'Code Signing Entitlements' 字段更新为我的权利文件的路径(对我来说,这类似于 ${SRCROOT}/MyProject/Entitlements/TargetName.entitlements).
我返回到“签名和功能”选项卡,看,问题已解决。希望有人觉得这有用。
转到 Xcode 的 Info 选项卡并更改 Bundle identifier 字段 - 更改应用程序名称后它没有即使我在“常规”选项卡上更改了“捆绑包标识符”,也会发生变化。上面的修复对我不起作用,但这个修复立即起作用了。
对我有用的是我在 XCode 11 中制作了存档,并在其中上传了 Xcode 12 beta。
我在 Xcode 12 beta 3 (app submissions started today) 中的一个全新应用程序中遇到了这个问题。
Xcode 开启了“自动管理签名”。但是,“签名证书”中显示的团队 ID 与 iTunes Connect 网站中显示的团队 ID 不匹配。这是阻止应用程序上传的根本原因。
我是如何修复它的:
- 我为 App Store 分发手动创建了配置文件
- 在 Xcode 中,我在首选项 -> 帐户中点击了“下载手动配置文件”
- 然后,我关闭了“自动管理签名”。
- 在下拉列表中选择配置文件后,正确的团队 ID 出现在“签名证书”下
我 运行 在设置运行 exportArchive cmd 并上传到 AppStore 的 Gitlab 管道时遇到了同样的问题。我能够通过将构建设置中的 DEVELOPMENT_TEAM 更改为在签名和证书中选择的同一团队来使其工作。
因为之前它被设置为空白,默认情况下使用另一个 DEV TEAM id,这是不正确的并且不匹配并且它抱怨“application-identifier”= 12331232.com.bannana.apples.peach 不匹配.这让我设置了正确的开发团队并且成功了。
Xcode版本:版本 11.3.1
我希望这对某人有所帮助。
我们的设置
多个目标:
- sub-apps
- 观看
- 应用剪辑
- 今日小部件
...并使用 iCloud。
打开和关闭 iCloud 对我们来说不是一个选项。我们已经在生产中使用它,而不是乱用它......我得到了原始问题的信息,并且在某些时候也得到了这种变化:
Profile doesn't match the entitlements file's values for the application-identifier and keychain-access-groups entitlements.
解决方案
这里的其他回复提示,我们确保所有目标都有一个 .entitlements
文件。如果目标有 none 我们创建一个空的像这样:
<?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/>
</plist>
...并将 Build Settings
中的目标 Code Signing Entitlement
指向空的 .entitlements
文件。
已解决!
删除位于 ~/Library/MobileDevice/Provisioning Profiles/
我正在开发一个带有使用 --dart-define 命令的 Flavors 的 Flutter 应用程序。 great article.
给我很大的启发但是我在部署时遇到了这个 'application-identifier' 问题。
我尝试了很多选择。
This solution 是对我有用的那个。
它与@n8tr 的
要恢复,只需在构建设置中的打包下将产品包标识符设置为 your.id.here$(DEFINEEXAMPLE_APP_SUFFIX)
,而不是 Info.plist.
在我的例子中,我必须输入:
<key>aps-environment</key>
<string>development</string>
在扩展名为 .entitlements
在我的例子中,我使用 --dart-define 从一个代码库创建多个应用程序,并在 flutter 应用程序中构建风格。
我什么都做对了 但只有一个
正如上面评论中提到的
我已经在构建设置中写了app_suffix (PRODUCT_BUNDLE_IDENTIFIER = com.flutter.myapp$(APP_SUFFIX))。 但我还在信息选项卡中将 app_suffix 写入了 Bundle 标识符。
我有同样的问题,因为我在 entitlements
文件中的 iCloud Key-Value Store
中有一个错误的值。我设置了以下值并解决了错误:
iCloud Key-Value Store = $(TeamIdentifierPrefix)$(CFBundleIdentifier)
看看是否添加了“使用 Apple 登录” 功能以及“后台模式”和“推送通知”等其他功能!
就我而言,它就在那里。
因此在删除 “使用 Apple 登录” 功能后,它已从“项目.entitlements 文件和配置文件立即同步。