【问题标题】:Certificate identity 'iPhone Developer: ' appears more than once in the keychain. The codesign tool requires there only be one证书身份“iPhone Developer:”在钥匙串中出现多次。协同设计工具只需要一个
【发布时间】:2013-09-02 11:30:33
【问题描述】:

好的,我完全把头发拉出来了。

早在 7 月份,我就创建了一个配置文件,以便在我的 iPad 上进行测试。

然后在 8 月底,我尝试将我的第一个应用程序提交到 iTunes Store。这个过程完全是一场噩梦,我很挣扎。很多。最后我找到了一个教程,里面有相对较新的信息,只有一步一步地跟着它,我才能真正做到这一点。不幸的是,结果是我创建了一个新的配置文件。

现在,当我尝试在我的 iPad 上进行测试时,我在 Xcode 中收到以下错误:

Certificate identity 'iPhone Developer: MyName' appears more than once in the keychain. The codesign tool requires there only be one.

我检查了钥匙串,果然有两个用于开发的配置文件,一个来自 7 月份,另一个是我在 8 月份提交给 iTunes Store 的。

现在我想做的是摆脱旧的,然后将我的 iPad 连接到新的。我可以摆脱旧的很好,但我无法将我的 iPad 连接到新的,它坚持使用旧的配置文件,甚至在我删除它之后将它重新附加到钥匙链上。

谁能告诉我:

如何将我的 iPad 连接到新的配置文件?

在我们讨论的过程中,任何人都可以解释为什么整个过程如此复杂和困难吗?考虑到 Apple 的大部分界面设计得如此出色和流畅,注册证书并将其应用于不同设备和应用程序的过程似乎如此落后。我最初怀疑这只是我,但通过谷歌搜索这些错误消息显示有许多人在此过程中的各个方面都在苦苦挣扎。

【问题讨论】:

  • 我认为您的第二个配置是用于分发,第一个是用于开发。您可以使用第一个配置文件测试您的应用程序,因为您告诉您删除了该配置文件,您必须在钥匙链上重新安装该配置文件并尝试使用您的第一个配置文件运行您的应用程序。
  • @KapilMaheshwari 我无法从单个特定配置文件进行测试,当我尝试在 ipad 上进行测试时会出错,因为我有两个配置文件。我不想删除新的,因为这是我用来在 App Store 上获取我的应用程序的配置文件(我真的不想再次经历这个过程)。
  • @KapilMaheshwari 进一步研究后,我有两个开发人员资料,这是我的问题。我想摆脱旧的配置文件并更新新的配置文件,以便我可以对其进行测试。

标签: ios objective-c xcode provisioning-profile


【解决方案1】:

这与 Xcode 无关,与钥匙串有关。

  1. 打开钥匙串。
  2. 查找与您的配置文件相关联的签名证书。
  3. 删除一个。您可能希望保留较新的,因此请查看到期日期并删除第一个到期的日期。
  4. 重启 Xcode

如果您的配置文件未绑定到新证书,您可能需要更新它,但这不会像创建新证书那样痛苦。

以下是 Xcode 中代码签名工作原理的广泛概述。它有点多,但会解释你的配置有什么问题,以及如何修复它。

  • 该机制由三个部分组成,可确保您是您所说的那个人,并且您的应用可以在它想去的地方运行。

    1. 您有一对密钥,一个是公共的,一个是私有的。您的公钥与您的私钥匹配,后者可识别您的身份。
    2. 您的密钥用于生成证书。通常,您将拥有一份开发证书和一份分发证书,无论是在 App Store 上还是通过 Ad Hoc 分发。这些证书允许您配置您的应用。
    3. 每个证书都用于生成配置文件。配置文件必须附加到开发或分发认证。分发配置文件可以在 App Store 上运行,或者它包含可以运行使用该配置文件签名的应用的设备 ID 列表。
  • 如果您的证书已过期,使用它创建的配置文件将无效。在这种情况下,请同时替换证书和配置文件。从 Keychain Access 生成证书签名请求 (CSR) 并将其上传到开发者门户。

  • 如果您的钥匙串中有多个证书,Xcode 将不知道使用哪一个。如果您更新证书并且不删除旧证书,则可能会发生这种情况。 (如果您导出了您的开发者资料,然后稍后再导入,也可能会发生这种情况。您的旧证书将继续使用。)

  • 如果您的配置文件已过期或无效,您可以在开发人员门户中更新它,而无需生成新的 CSR。您可以将其附加到现有的有效证书上。

如果不移动请求它的原始密钥对,证书就无法从一台机器转移到另一台机器。从 Keychain 导出证书也将导出密钥。

【讨论】:

  • 我这样做了。在重新启动 Xcode 并尝试在 iPad 上进行测试时,它会引发另一个错误:A valid provisioning profile matching the application's Identifier could not be found 我猜这是因为它正在寻找我删除的旧配置文件。
  • 不完全但接近。您没有删除配置文件 - 您删除了证书。没有证书,旧配置文件将失效。您需要生成一个新的配置文件。
  • 好的,所有这一切都让我解决了我的问题 - 欢呼 Moshe。非常感谢您对代码签名的工作原理进行了清晰简洁的解释!这很有帮助!
【解决方案2】:

删除旧的,并开始用新的构建。 您可以尝试的另一种方法是使用要在目标和项目构建设置中运行的配置文件设置代码签名身份。 希望它会帮助你。 否则你必须删除旧的。

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 2012-07-10
    • 2012-03-10
    • 2011-02-15
    • 2013-05-12
    • 1970-01-01
    • 2021-01-19
    • 2011-08-21
    相关资源
    最近更新 更多