Xcode 8显示配置文件不包含签名证书的错误

Sat*_*ani 201 iphone ios provisioning-profile xcode8

Xcode 8显示配置文件不包含签名证书的错误.

此问题仅适用于Xcode-8,Xcode 7,相同的配置文件显示相关的已识别证书.

Eys*_*Bye 215

有很多方法可以解决此问题,例如启用自动签名等.但是,如果您想了解此错误的原因,则需要查看错误消息.

它表示您在"常规"选项卡中选择的配置文件不包含您在"构建设置" - >"代码签名标识"中选择的签名证书.

如果在"构建设置" - >"代码签名标识"下为调试标识选择了分发证书,通常会发生这种情况.

如果在"签名(调试)"下发生这种情况,则可能是"签名身份" - >"iOS开发"未包含在配置文件中.

  • 你先生是经过认证的黑帮老大. (38认同)
  • 你结交了我的一天,谢谢你的帮助. (4认同)
  • 哇!这是问题的实际答案.想知道为什么它不是公认的答案.谢谢先生 ! (4认同)

Nic*_*ick 177

检查您的钥匙串以查找缺少私钥的身份.我为同一个团队安装了多个分发证书,其中一个丢失了私钥.Xcode只检查钥匙串中的第一个匹配身份并自动使用此身份而不是包含私钥的身份.

在此输入图像描述

删除没有私钥的匹配标识使Xcode再次检测到正确的标识.

  • 没有为我解决问题.这可能是多个根本原因可能发生的问题之一. (9认同)
  • 在我的情况下,**登录**钥匙串中的几个Certs(=签名身份)具有相同的名称,但具有不同的日期(注意**系统**钥匙串我只得到一个具有正确日期的钥匙链).删除除正确之外的所有操作都可以. (8认同)
  • 与@ RAM237类似,我有多个同名的证书仍然附加了私钥.删除除正确的所有之外的所有帮助. (5认同)
  • 我的所有证书都有私钥,所以原因肯定不同. (3认同)

Sat*_*ani 82

要解决这个问题,

我只是在项目设置常规选项卡中启用"自动管理签名",在启用之前我担心它可能有一些副作用,但一旦我启用它对我有用.

希望这对其他人有帮助! 在此输入图像描述

  • 最糟糕的是,通过让xcode处理你的证书,你失去了所有的配置.懒惰的混蛋Xcode只会产生新的证书! (19认同)

d0y*_*0ye 57

对于那些由于某种原因应该继续使用不是auotamatic的人

打开keyChain Access查看是否有两个相同的认证,如果有两个或更多,只需删除一个,它将工作:)


Mus*_*les 34

我在最近将Xcode更新到版本9.3之后遇到了这个问题.问题出在代码签名(在调试下)证书设置为分发证书而不是开发证书,因此这阻止了我在我的设备上安装应用程序.

以下是我为解决此问题所做的工作.

项目 - >目标 - >选择您的应用程序 - >构建设置 - >代码签名身份 - >调试 - >双击"iPhone分发"并将其更改为"iPhone Developer".


Lok*_*oke 27

我取消选中,然后选中"自动管理签名"选项.这为我解决了这个问题.

  • 最佳答案 (3认同)

bla*_*k75 23

为什么值得自动签名失败,直到我只是手动删除本地配置文件:〜/ Library/MobileDevice/Provisioning Profiles

在此之后,自动签名工作得很好,并且从Apple的服务器获得了正确的配置文件.

这只影响了一些构建,特别是我为手表应用程序手动创建了配置文件的构建.

  • 对我来说,我没有重复,但在删除然后重新下载我的配置文件后,它似乎正常工作. (2认同)
  • 我尝试了其他所有方法,但在删除现有配置文件并让 Xcode 重新下载它们之前没有任何效果 (2认同)
  • @ChenLiYong 那是一个隐藏文件夹。按`CMD + Shift + .` 显示所有隐藏文件。 (2认同)

小智 18

对于那些仍然在Xcode8中解决这个问题的人.对我来说是一个重复的证书问题,这是我解决它的方式:

我读了尼克的答案,然后我开始调查了.我在特定情况下检查了所有密钥和证书(在〜/ Library/Keychains/System.keychain内).

当我打开文件时,我发现我有两个iPhone发行证书(这是Xcode要求我的证书),一个是我从一开始就使用的iOS发布私钥,另一个是iPhone发行证书. private Key有一个名字(iOS Distribution:NAME),对我来说并不熟悉.我删除了最后一个证书,再次启动Xcode,问题就消失了.xCode无法解决该冲突,这就是它一直给出签名证书错误的原因.

检查你的钥匙串,也许你有一个重复的证书.


Mar*_*ark 15

如果您使用手动签名(我肯定会鼓励),则可能会发生此错误,因为Xcode认为应该使用开发人员证书对发布版本进行签名,该证书显然不包含在发布设置配置文件中。

有一个构建设置,定义用于哪个构建配置的证书。要更改它,请转到构建设置并搜索“ 代码签名身份”。展开后,每个构建配置(通常是Debug和Release)应该有单独的行,并在第二栏中显示其选定的身份(通常是iOS Developer或iOS Distribution)。确保为每个构建配置将其设置为正确的标识。

在某些情况下,构建配置也可以扩展。确保其子项也设置为正确的标识。

  • 完美的答案, (2认同)

Tom*_*ner 10

您还可以使用Fastlane工具包解决代码签名问题.作者投入了大量精力来有效地自动构建,签署iOS应用程序(以及更多).

所以在上面提到的套件中,有一个工具sigh可以神奇地解决任何签名问题,因此名称:)这里的好东西是,这个工具封装了有关常见签名问题的知识,可以检测并解决大多数问题.

Fastlane作为Ruby gem安装:

gem install fastlane

然后简单地调用:

fastlane sigh --development

回答两个问题,瞧:

[11:56:55]: No existing profiles found, that match the certificates you have installed locally! Creating a new provisioning profile for you
[11:57:01]: Creating new provisioning profile for 'com.myapp' with name 'com.myapp Development'
[11:57:06]: Downloading provisioning profile...
[11:57:09]: Successfully downloaded provisioning profile...
[11:57:09]: Installing provisioning profile...
Run Code Online (Sandbox Code Playgroud)

最后,转到Build Settings - > Signing,然后切换到新创建的配置文件,其名称只是在命令输出中看到的.

此示例用于开发代码签名问题(在设备上运行).检查所有其他选项的叹息文档.


Zap*_*ndr 8

发生了同样的错误。配置文件似乎已更新,添加了新证书,我什至在下载时进行了检查。还吊销了以前的开发人员的证书,不包括在配置文件中。但是Xcode仍然向我询问有关先前证书的错误:

No certificate for team 'MY_TEAM' matching 'iPhone Developer: FORMER_DEVELOPER' found
Run Code Online (Sandbox Code Playgroud)

所以,我做了什么来解决它:

  1. 转到Build Settings-> Signing->Code Signing Identity
  2. 查找所有“ FORMER_DEVELOPER”证书,然后选择所需。

希望它能帮助到别人。

  • 这是这里唯一真正的解决方案。 (2认同)

Ars*_*aik 7

在我的情况下,在钥匙串我有两个同名的证书,我删除了一个重复的证书,然后它解决了问题.


War*_*arp 5

“启用自动签名”,然后从下拉菜单中选择一个团队可以帮助我解决这个确切的问题。


Dyl*_*n w 5

我有已撤销的证书中剩余的私钥,证书消失了,但私钥没有。删除它们解决了问题。

要找到他们:

  1. 打开钥匙串访问
  2. 单击左侧菜单类别下的“按键”
  3. 查找没有绑定证书的 iOS Developer: ...” 密钥
  4. 我删除了它们,问题就消失了

图中突出显示的密钥是没有证书的示例私钥。

突出显示的项目是导致问题的关键,删除它可以解决问题


Jim*_*Jim 5

因为我还没有看到这个具体的答案:

我的问题是我需要手动签名。所以我的错误是在“构建设置”->“代码签名”->“代码签名身份”中

我已正确设置调试(自动签名样式和 Apple 开发证书)、暂存和发布(手动和 Apple 分发 (adHoc) 变体。

我没有正确设置的(由于我理解中的一些逻辑缺陷)是“ANY IOS SDK”值。一旦我将其设置为相同的手动 Apple 分发证书,错误就消失了。

最初我将其设置为自动值“iOS Distribution”,因为我认为它会更好地自动处理,因为我不知道它的含义。还是不行。哦,希望有帮助