配置文件与应用程序标识符权利的权利文件值不匹配


92

我正在尝试将应用上传到应用商店,并且在包含证书的页面上收到此错误。据我所知,我已经更改了字段以使它们匹配,但是我缺少一些东西。

这是弹出的

任何帮助将不胜感激。

info.plist


1
显示您的entitlements.plist文件。
伊马德·阿里

也许是因为我以前从未寻找过它,但是我看到的唯一的读者说的是信息,但这是第二张图片。
Paul Raymond

它说我无法发布任何链接,如果有人有任何想法,我将登上芝加哥飞机
Paul Raymond

Answers:


208

我不确定为什么要修复此问题,但是我进入了“目标的功能”选项卡,打开了iCloud,尝试进行存档构建,但失败了,我再次关闭了iCloud,尝试进行了存档构建,并成功了,之后,它能够再次自动解析证书。


3
不知道为什么这样做有效,但是确实如此,苹果的支持远没有那么有用。
Paul Raymond

13
谢谢您-在切换开/关后,它在xcodeproj旁边创建了一个空的.entitlements plist。看起来这就是提交过程正在寻找的东西。对于不需要任何权利/功能的现有应用,在Xcode 9中可能只是一个问题。
安德鲁·伍德

3
同样在这里。古代项目。非常感谢您提出切换功能的建议,现在已经接受了一个空的.entitlements。向Apple提交错误。
RickJansen '17

6
在这个bs上打了整个晚上。我必须打开和关闭,这创建了空白权利文件,然后我必须将“代码签名权利”构建设置指向该空白文件。
亚当·怀特

2
在Xcode 10.0beta5中,这种情况仍在发生。对我来说,这是由于在创建权利后更改了项目名称。切换iCloud,然后再关闭,将重命名权利文件,并在构建设置中更新其名称。该文件的内容是相同的。似乎无论构建设置文件名如何,上传者都在乎授权文件的名称。
特洛伊(Troy)

40

右键单击Finder->转到文件夹...

~/Library/MobileDevice/Provisioning

对于Xcode 11

~/Library/MobileDevice/Provisioning Profiles/

删除所有配置文件,完成。


1
在我的情况下,该文件夹为“〜/ Library / MobileDevice / Provisioning Profiles”
LightMan

同意,这是正确的答案,只是使用Xcode 11的路径是~/Library/MobileDevice/Provisioning Profiles/
MariusKažemėkaitis19年

为什么这可以解决问题?我们刚刚删除了什么?这有副作用吗?
markdon '19

您将删除Xcode自动添加的配置文件或通过从developer.apple.com打开配置文件手动添加的配置文件。如果您不想丢失其他配置文件,则可以使用类似以下内容:grep -ir YOUR_APP_ID〜/ Library / MobileDevice / Provisioning \ Profiles; 显示匹配的配置文件。只需删除它们,即可完成相同的任务。
克里斯·道格拉斯

33

您创建的应用application-identifier的配置文件预期值不正确。团队2ABCDEFG的appID com.example.foo的证书将使用应用程序标识符:2ABCDEFG.com.example.foo,您的应用程序声明其appID为com.example.foo,但该应用程序标识符不匹配,或者您使用了错误的团队前缀,或者您的bundleID配置错误。

就我而言,我正在使用构建方案来允许我构建prod应用程序和qa应用程序。com.example.foo用于生产产品,com.example.foo.qa用于质量检查。我已在Info.plist中将我的bundleIdentifier设置为$(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX),在模拟器和具有不同应用程序的设备上都可以很好地工作,但是,当应用程序在存档阶段生成其应用程序标识符时,一定不能读取Info.plist生成的bundleIdentifier。

为了解决这种情况,我编辑了FooProject.xcodeproj / project.pbxproj(使用文本编辑器)以将我的质量检查buildSettings PRODUCT_BUNDLE_IDENTIFIER更改为com.example.foo.qa

您可以查看Apple的技术问答,以深入了解他们的解决方案。一旦在导出的应用程序上运行了codesign权利,并查看了构建应用程序的应用程序标识符,就可以很快意识到自己在做什么错。 https://developer.apple.com/library/content/qa/qa1879/_index.html 我没有在Google搜索中找到该页面,因为他们实际上没有使用错误消息中的短语或调用应用程序-identifier的全名,但改为说App ID。

另外,解决此问题的方法不是生成具有应用程序标识符权限的新配置文件,而是具有该权限,但是,配置文件中的值必须与您的应用程序匹配。


2
谢谢!通过更改包装下的构建设置,可以对产品捆绑包标识符中的后缀使用自定义变量来进行修复。例如com.mycompany.myapp $(BUNDLE_ID_SUFFIX)并解决了该问题。因此,我不必手动编辑项目文件,并且能够轻松地在每个环境中维护不同的捆绑软件ID。
n8tr

导致应用程序标识符不匹配的原因之一是您没有下载所有的配置文件。如果缺少具有确切应用ID的配置文件,则会使用通配符配置文件创建存档,这会导致导出阶段不匹配。
diidu

这对我有用。我当时正在构建一个Ionic应用程序,并意识到我在其他帐户上进行了测试。我使用com.foo.testName并在使用正确的帐户构建时将其改回。看来com.foo.testName仍然在pbxproj文件
Dewald埃尔斯

非常感谢,这正是阻止我进行验证的原因,其解释非常清楚!
MDH

@ n8tr经过近一个星期的头痛和沮丧,您的评论救了我。谢谢。
Behdad '18

9

也许缺少{project} .entitlements文件。进行@samkass提及的操作将自动生成文件,并且它将起作用。因此,基本上只需转到功能选项卡,启用任何功能,然后将其禁用。


这很愚蠢,但是它对我正在更新的多个较旧的项目很有用。
aspro

7

将iCloud切换为打开,构建和禁用iCloud,摆脱了以下错误:

配置文件与应用程序标识符和钥匙串访问组权利的权利文件的值不匹配。


3

在Xcode 11中,当项​​目中不存在.entitlement文件时,可能会发生这种情况。解决方案是通过单击“签名和功能”下的“ +功能”(这会导致创建.entitlement文件)来添加任何随机功能,然后删除该功能。这也可以让您自动设置证书。


2

请检查您的应用所需的应用功能,例如在应用内购买,推送通知,应用间音频,Siri套件等。

这是导致此类错误的唯一原因。

确保在您的应用ID中,上述标记应处于启用状态。

大多数情况下,这种情况发生在您未配置推送通知,开发应用程序ID的应用内购买中。


我还没有启用任何功能。真令人沮丧。
Paul Raymond

您的应用程序具有我上面提到的任何功能
Tech

稍后我将附上屏幕截图,但是没有推送通知或该应用的应用购买中。
保罗·雷蒙德

您究竟想要什么截屏?在plist下,它没有提及权利。
Paul Raymond

2

我进入目标的功能选项卡,打开了钥匙串共享,它开始工作


2

对我来说,诀窍是

  1. 为目标添加/删除功能(在我的情况下为小部件);
  2. 确保在构建设置中列出了创建的权利文件;
  3. 并将带有值“ development”的“ APS Environemnt”密钥添加到entitlemenets文件。

1

在Xcode 10中,我通过将权利文件移动到Project Navigator中的正确文件夹来使其工作。我没有权利文件,但是通过切换功能选项卡上的功能设法获得了一个权利文件。

在此处输入图片说明


1

我遇到了同样的错误,上面的解决方案都无法解决我的问题。

对我有用的是将“ Entitlements.plist”文件中的“可以调试”设置从“否”更改为“是”。


1

在我的情况下,问题如下:用于构建步骤的配置文件是为不同于导出步骤的配置文件创建的。

因此,请确保您在构建和导出步骤中使用了相同的配置文件。


因为我想强调指出此错误可能是由于构建和导出步骤上的供应配置文件不同而发生的。在这种情况下,错误消息对查找根本原因没有帮助。至于答案为什么迟到-该错误不受特定时间段的限制。因此,它发生在一年前,现在发生了。在我的情况下,接受的答案无效。
阿列克谢·科莫夫

1

对我有用的是,我使用XCode 11创建了存档,并在Xcode 12 beta中进行了上传。


0

应用中的交叉检查功能,以及您在开发者帐户中为应用ID启用的选项。


这是一个免费的应用程序,我还没有启用任何功能,这实在令人沮丧。它可以在我的设备上正常安装,我只是不知道在哪里看。
保罗·雷蒙德

您可以共享两者的屏幕截图吗?
KavyaKavita

您想要什么截图?
Paul Raymond

开发人员帐户上的功能部分和应用ID配置的屏幕截图
KavyaKavita

0

我尝试了此处答案中列出的一些选项,但没有任何帮助,但是,切换了“自动管理签名”复选框,然后解决了该问题。


0

TL; DR:检查您的App ID,并确保服务与您目标中的服务匹配。


我发生的事情是我让Xcode 10.1帮助我创建了一个App ID,然后,我遇到了此处所述的问题。(当我在iTunesConnect中创建应用程序时,我选择了“ whildcard”应用程序ID,因此我什至没有意识到这一点。)当我打开iOS开发者门户时,新的应用程序ID将自动启用“游戏中心”和“应用程序内购买”。

由于无法在中启用Game Center Target -> Capabilities,因此我启用了“在应用内购买”功能,然后可以对我的应用进行签名和上传。


0

当我们面对相同的问题时,我们尝试了上述所有方法,但均无济于事。

对我们有用的是更改捆绑标识符,使其与前一个标识符不同,例如,将“ com.name.App”更改为“ com.name.App2”;让xcode尝试获取/创建配置文件,然后将其恢复到原始配置文件。

在Apple开发人员论坛上的此主题中获得了这个想法-https : //forums.developer.apple.com/thread/114539


0

在尝试创建重复的目标之后,我最近遇到了此页面-没有建议对我有用。进一步的调查,以及大量的头发拉扯,最终导致我对应用程序的构建设置进行了搜索,以试图找出问题所在。

原来,我的项目仍指向原始目标的权利文件,而不是拥有自己的目标文件。为了解决这个问题,我导航到Finder中的原始权利文件(例如$ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements),在同一文件夹中创建了一个副本,然后将其重命名(例如NewTargetName.entitlements)。

然后,我打开了新的授权文件,并更改了application-identifier字段以匹配新目标的捆绑标识符的结尾(例如ABCDEFGH.US.co.fake-company.superduperapp-newtargetname)。

最后,我将构建设置中的“代码签名权利”字段更新为我的权利文件的路径(对我来说,这是$ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements中的内容)。

我返回到“签名和功能”选项卡,然后,此问题已解决。希望那里的人觉得这有用。


0

转到Xcode的“信息”选项卡并更改“捆绑包标识符”字段-更改应用程序名称后,即使我在“常规”选项卡上更改了“捆绑包标识符”,它也没有改变。上面的修复程序对我不起作用,但是此修复程序立即起作用。


0

我在Xcode 12 beta 3中遇到了一个全新应用程序的问题(今天开始提交应用程序)。

Xcode启用了“自动管理签名”。但是,“签名证书”中显示的团队ID与iTunes Connect网站上显示的团队ID不匹配。这是阻止应用程序上载的根本原因。

我如何解决它:

  1. 我为App Store分发手动创建了配置文件
  2. 在Xcode中,我点击了“偏好设置”->“帐户”中的“下载手动配置文件”
  3. 然后,我关闭了“自动管理签名”。
  4. 在下拉菜单中选择配置文件后,正确的团队ID就会显示在“签名证书”下

0

在设置运行exportArchive cmd并上传到AppStore的Gitlab管道时,我遇到了同样的问题。通过将“构建设置”中的DEVELOPMENT_TEAM更改为在“签名和证书”中选择的同一团队,我能够使其工作。

因为以前将其设置为空白,所以默认情况下使用的是另一个DEV TEAM ID,该ID不正确且不匹配,并且它抱怨“ application-identifier” = 12331232.com.bannana.apples.peach不匹配。这导致我设置了正确的DEV TEAM,并且有效。

Xcode版本:11.3.1版

希望对您有所帮助。


0

我们的设置

多个目标:

  • 子应用
  • 应用程式剪辑
  • 今天小部件

...并使用iCloud。

开启和关闭iCloud并不是我们的选择。我们已经在生产中使用它,而不是弄乱它……我得到了原始问题的信息,并且在某些时候也有了这种变化:

配置文件与application-identifier和keychain-access-groups权利的权利文件的值不匹配。

从这里的其他回复中可以看出,我们确保所有目标都将有一个.entitlements文件。如果目标没有,我们将创建一个空对象,如下所示:

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

...并指出它的目标Code Signing EntitlementBuild Settings为空.entitlements文件。

解决了!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.