/usr/bin/codesign执行失败,退出代码为1。

83

我正在尝试部署我的第一个iPhone开发应用程序,但遇到了一些问题。我已经成功通过在线Provisioning Assistant,但现在卡住了。无论我做什么,我总是得到以下错误消息:

/usr/bin/codesign 失败,退出代码为1

有人知道为什么会出现这种情况吗?


补充问题:Xcode出现“代码签名”错误 - Richard Stelling
1
这个解决方案对我很有效。我正在开发macOS应用程序。 - Mediajon
28个回答

55

更新:
我的原始回答中的技术笔记现在已经过时。苹果发布了一个新文档,其中包含一些代码签名问题(以及解决方案):Technical Note TN2407 Code Signing Troubleshooting Index

检查您的构建设置中的CODE_SIGN_IDENTITY属性。是否选择了您的配置文件?
您还需要在应用程序的.plist文件中输入一个有效的捆绑标识符。
该标识符必须与生成配置文件时提供的标识符匹配。
苹果有一篇技术笔记here介绍这个。


1
原来有效的捆绑标识符是问题所在。感谢您的帮助,现在已经修复了。 - PF1
你如何“输入有效的捆绑标识符”?这些标识符长什么样子? - buildsucceeded
一个 bundle 的标识符是一个以反向 DNS 表示法(例如 com.apple.dt.Xcode)的字符串,它被分配给 plist 键 CFBundleIdentifier。更多信息请参见:http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102070-TPXREF105 - Thomas Zoechling
我甚至不知道那里有这个设置。你真是救了我的命。 - dclowd9901

25

我刚刚遇到了这个错误,在这里分享一下我的发现,希望对大家有所帮助:我发现你可以在Xcode中右键点击错误信息,选择“展开”以获取更多详细信息,包括问题的描述。

在我的情况下,我的开发者证书在不同的钥匙串文件中有两个相同名称的副本,Xcode无法确定该使用哪一个。


你是如何解决的?我也遇到了同样的问题,但钥匙串访问工具只显示了一个证书。 - Dan Ray
11
我找到了。记录一下,问题出在我的系统钥匙串上一个过期的证书。默认情况下,钥匙串访问不会显示已过期的证书。我进入系统钥匙串,让钥匙串访问告诉我哪些证书已经过期,删除了与我的登录钥匙串上正确证书发生冲突的过期证书,问题得以解决。 - Dan Ray
Tobias,你真是太棒了。感谢你找到了那个右键技巧。 - Greg Combs
我也遇到了这个问题。在我的情况下,展开它后显示常用名称“不明确”,因为居然是 TweetDeck 把我的一个帐户登录的钥匙串占用了。我不得不进入 Library/Application Support/Adobe/Air/ELS/,并清除其中的文件。然后一切都正常工作了。真是奇怪! - dredful
在我的情况下,问题是一个连接到我的Mac mini的智能卡具有无效证书。 - Giorgio

18

在 Xcode 9.0 中处理 codesign 问题可能会有一些奇怪的答案。我也曾遇到过这个错误,不知道该怎么办,因为一切都是正确的。

我去了钥匙链,将登录选项“解锁”改成了“锁定”。然后重新编译我的构建。Xcode 本身要求我打开访问钥匙串。我授权访问并且它成功了。

步骤如下:

  1. 前往钥匙链
  2. 锁定它
  3. 存档代码,再次构建项目

这个有效 - accountsd 在更新后重新启动时请求了钥匙串访问权限,但我忽略了它,因为底下的模态框表现很奇怪。弹出钥匙串是解决问题的关键。 - Warren Burton

14

我遇到了完全相同的错误,并尝试了这个页面上其他提供的所有方法,但都没有成功。对我而言,问题出在密钥链访问中,实际的 Apple WWDR 证书被标记为“始终信任”,它需要改成“系统默认”。您的开发和分发证书也是如此。如果其中任何一个被错误地设置为“始终信任”,那么显然会导致这个问题。

因此,在密钥链访问中,点击苹果全球开发者关系证书颁发机构的证书,选择获取信息。然后,展开信任设置,并为下拉菜单“使用此证书时:”选择“系统默认”。

其他人评论说,你可能需要在系统登录密钥链中执行此操作以解决这些错误


非常感谢,我遇到了这个问题已经三天了,尝试了很多方法,比如从“我的证书”中删除所有证书,删除Apple Id等等,但最终当我点击“苹果全球开发者关系证书颁发机构”证书,选择“获取信息”。然后,展开信任设置,并在“使用此证书时:”的组合框中选择“系统默认值”时,问题得以解决。 - Ankit

10

当您遇到此类错误时,可能有很多原因:

  1. 检查您是否选择了包含设置中有效的代码签名标识和有效的Bundle Identifier的预配置文件。 (转到“构建设置”->“签名”->“预配置文件”)。

  2. 打开钥匙串访问,并单击左上角的锁图标,以锁定登录钥匙串,然后再次单击以解锁。

在这里输入图片描述

  1. 转到“文件”->“项目设置”->“派生数据”并删除您的项目构建文件夹。 然后清理并构建您的应用程序。

是的 @cesarak,我认为这是Keychain中某种错误。 - Rahul Kumar

6
我曾经遇到过分发版本构建的同样问题,这个问题突然出现了。实际上,几天前我还没有这个问题,我的Ad-Hoc版本编译正常。这个问题是因为我的证书今天刚刚过期了。所以我按照苹果的指导(http://developer.apple.com/ios/manage/distribution/index.action)创建了一个新的provisional。
在网上花费数小时并确保我没有犯任何错误后,以下是Tobias和Dan Ray建议我的解决方法:
1. "......发现你可以右键单击Xcode中的错误消息来查看详细信息"。 2. "......问题是系统钥匙串上的过期证书。默认情况下,钥匙串访问不显示过期的证书"。
详细信息告诉我有两个证书模糊匹配。其中一个恰好是系统钥匙链中的过期证书。所以我删除了过期证书,然后它就可以工作了!我还担心在使用钥匙串实用程序创建分发证书时要输入什么“通用名称”:我的名字还是我的公司名称。在我的情况下,我输入了我的名字。我猜这与由开发者自动回复电子邮件地址的标题相同。
非常感谢帮助。谢谢。

3

2

1
嘿,马特,谢谢!它把我逼疯了……我已经几次放弃了,但还是没能解决问题……最后,深度帮了我很多……但最终我想问题出在我没有在XCode中添加我的开发者账户上……无论如何,这确实很奇怪。 - Lukas

1

我曾经遇到过同样的问题。最终发现是我的私钥不允许 codesign 访问它。可以在钥匙串应用程序的信息对话框中看到这一点。


1

我必须同意Tobias的观点。这个错误太泛泛了。当同样的事情发生在我身上时,我深入研究了错误信息,并意识到我在构建属性方面搞砸了什么,但并不是代码签名。所以,是的,我会深入挖掘细节。


1
你应该将这个作为评论放在用户的问题下面。 - Matteo Alessani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接