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

问题描述 投票:61回答:40

我有以下错误:

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

这是我已经尝试解决这个问题的方法:

  • 将包标识符设置为com.server.pgmname
  • 将代码签名设置为“Any Iphone OS Device”
  • 将代码签名标识设置为我的分发标识。

只有当我尝试在我的设备上构建时才会出现错误,在模拟器上一切正常。

你有什么建议吗?

ios iphone exit-code codesign
40个回答
54
投票

我有完全相同的错误,并在阳光下尝试了一切,包括本页其他地方的建议。对我来说问题是,在Keychain Access中,实际的Apple WWDR证书被标记为“始终信任”。它需要是“系统默认值”。这也适用于您的开发和分发证书。如果其中任何一个被错误地设置为“始终信任”,则显然会导致此问题。

因此,在Keychain Access中,单击Apple Worldwide Developer Relations Certificate Authority证书,选择获取信息。然后,展开信任设置,对于“使用此证书时:”的组合框,选择“系统默认值”。


叹气:对于那些坚持不懈地回答这个问题的人,我并不是说这是解决这个问题的唯一方法。这是一个解决方案。它可能对你不起作用。这个codesign失败有多种原因。


2
投票

我有同样的问题,很长一段时间都无法理解。我尝试了这个页面上的所有内容和其他内容,但它仍然无效。但最终,我确实找到了解决办法。

为此,请确保Xcode未运行。关闭Xcode后,打开终端并输入命令:

xattr -rc /[The File Directory of your project found in the File Inspector of your .xcodeproj file in Xcode]/

显然不要将文本放在括号中,只需将其替换为所说的内容即可。点击进入。如果命令下面没有任何内容,请不要担心,它不适合我。之后,您可以关闭终端并打开Xcode。现在一切都应该没问题。注意:运行项目可能需要一些时间,但只需等待即可。

另请注意:不要低估这个答案,因为它不起作用。这是修复它对我有用的一种方法,但它可能不适合你,因为你可能还有其他东西被打破了。


1
投票

大多数答案都会告诉您证书重复。这对我的情况来说是正确的,但答案遗漏了如何做到这一点。

对我来说,我的帐户已过期,我必须获得一个新证书并安装它。接下来,我查看了Keychain并删除了过期的证书,但仍然收到错误。对我有用的实际上是在Keychain中搜索“iPhone”并删除所有过期的证书。显然,其中一些没有显示在系统/证书或登录/证书中。

希望这可以帮助!


1
投票

在我的情况下,我的钥匙串中有一个额外的过期分发证书 - 我从KeyChain Access中删除了证书,并且编译开始再次运行。


1
投票

如果您使用的是phonegap / cordova:

从Cordova建造时我得到了这个,但对我来说解决方案要简单得多。权限问题。

只需将文件设置为正确的权限

chmod -R 774 ./projectfolder

然后设置所有权

chown -R youraccname:staff ./projectfolder 

1
投票

上面的一些答案提到了问题,但没有明确说明纠正它的步骤。

这是我的尝试之后它变得非常令人沮丧,这似乎对我有用,到目前为止:

问题是由于Apple Developer portal或您的计算机中存在重复的证书而导致的。这样做我没有任何负面影响,到目前为止它已经奏效。

  1. 关闭Xcode!
  2. 您必须从开发人员帐户访问中删除现有证书:https://developer.apple.com/account/ios/certificate/development/并选择开发帐户(应该有多个证书)我通过单击它们并选择撤销来撤销每个证书。

select development certs

2.从Mac上的钥匙串中删除证书

  • 通过按三叶草+空格并键入钥匙串打开钥匙串应用程序 然后按回车键
  • 在右上角搜索“开发者”
  • 选择潜在的重复键并导出/删除它们,使它们不在列表中。

search by developer

  1. 最后在XCode中重新生成您的证书并重新启动 重新打开xcode 通过转到项目 - >常规 - >签名来重新生成新证书 重新选择“团队帐户”

signing setup

  • 应生成新证书
  • 重新启动以获得良好的衡量标准 - 并享受免于此错误(Apple应该真正解决,如果它可以轻松复制)

1
投票

我第一次尝试按照配置助手制作配置文件时出现此错误,结果发现他们没有提及WWDR Intermediate Certificate。我安装它,它对我来说很好。


1
投票

这是我的解决方法:

  • 打开钥匙串访问权限,选择您的iOS证书,删除私钥
  • 然后返回xCode,您将看到警告警告消息和“撤销”按钮,单击它并解决错误。

1
投票

如果用户在/usr/bin/codesign failed with exit code 1文件夹中没有纹理文件的文件扩展名,通常会出现错误Models.scnassetsmacOS经常生成带有隐藏扩展名的文件。

例如:你有一个文件myTexture但它必须包括一个扩展名 - myTexture.png


0
投票

尝试在显示错误的“构建结果”视图中找出此错误的详细信息。在带有错误消息的行的右侧,有一个带有多行的图标。这将向您展示一些有用的细节。

这样我发现我的钥匙串中有一个重复的iPhone开发人员证书 - 其中一个已经过期了。也许在您的钥匙串中搜索“iphone”(首先选择“所有项目”类别)。


0
投票

一个解决方案更适合我,如果您安装了两个版本的XCode并且安装了第二个而没有卸载第一个在同一目录(/ Developer /)中,那么您做错了。所以对我有用的解决方案是:

1 - 使用命令sudo / Developer / Library / uninstall-devtools --mode = all卸载当前的Xcode版本。

2 - 安装第一个Xcode版本。

3 - 再次sudo / Developer / Library / uninstall-devtools --mode = all。

4 - 然后,一切都很干净,您可以安装所需的版本。

更多的事情:也许你需要在安装Xcode之后重新启动计算机,甚至(在某些情况下)安装两次Xcode。

我希望我的工作花了很多时间才能知道,祝你好运!


30
投票

我有完全相同的问题,这对我有用:

Xcode>首选项>帐户>查看详细信息>只需刷新供应配置文件

似乎Xcode中的帐户未使用最新的配置文件进行更新,因此快速刷新将其排序。


0
投票

对我有用的解决方案与(我认为)升级到Xcode 4.2后路径行为的变化有关:

您不能再手动输入“armv6 armv7”,而必须输入$(VALID_ARCHS):两者都是项目的Build Settings窗格中Architectures部分下的Architectures和Valid Architectures字段。 Xcode会自动用'armv6 armv7'替换该语句。

这个字符串看起来与您手动输入的字符串完全相同,但仍然指向将与您的构建一起生成的实际正确路径,...或者至少这是我对它的看法:P

不相关,我们曾经在其他签名标志下有“armv6 armv7”,现在把它拿出来,它工作正常。这必须是一个额外的。

谢谢,快乐的黑客。刚


0
投票

我去了Key Access,选择了私钥,并将XCode添加到可以访问它的应用程序列表中。这对我有用


0
投票

如果有人使用Xcode ver。 3.x.x和从Mac OS 10.7升级到10.8,dev。工具将正常工作,除了新的代码二进制..修复它只是复制旧的codesign和codesign_allocate二进制文件(我希望你有备份)到/ usr / bin /文件夹并重命名或备份新的。


0
投票

我在项目名称中有特殊字符,重命名它以删除字符,问号,并确保启用开发人员证书修复了该问题。


0
投票

当我遇到这个错误时,这是​​由于已经进入Keychain Access,并在被问到是否要让程序访问保存的密码时选择“Disallow”。返回并选择“允许”并键入我的系统密码修复了XCode中的问题。


0
投票

对我来说问题是HTTP代理


0
投票

这是我如何解决同样的问题。它可能会帮助某人。

我从服务器上删除了开发配置文件(我正在使用),然后创建一个名称略有不同的配置文件。我用它并且它起作用了。


0
投票

当我在一个项目中有多个目标时,我发生了这个问题,并且我将CFBundleExecutable plist属性更改为目标名称以外的其他属性。

因此,例如,我在一个项目中有以下目标:

  • SomeApp
  • SomeApp WatchKit扩展
  • SomeApp WatchKit应用程序
  • SomeApp Today Widget
  • 适用于OS X的SomeApp(这是发生编码错误的目标)

SomeX for OS X的CFBundleExecutable属性设置为SomeApp,它不仅与第一个名为SomeApp的目标发生冲突,而且与目标目标不同。将SomeApp for OS X更改为SomeApp然后重命名第一个目标对我来说很好。


0
投票

对我来说,我在框架方案上启用了代码覆盖,而不是相应的测试方案。禁用代码覆盖率排序问题。


0
投票

这个非常复杂的问题的一个非常简单的答案。它不涉及代码签名以及与之相关的所有内容。

拿一个不再需要的旧应用程序。确保它有效,然后将其代码替换为具有代码签名错误的新应用程序的代码。旧应用程序现在应该可以正常工作,使用新应用程序完成您想要的任务。

只有失败:工作应用程序具有旧的标题。


26
投票

觉得有必要分享这个,即使这很荒谬。

我在Mac上设置了第二个开发者帐户,无法对其进行任何编码。错误是“用户取消了操作”。

一个简单的重启就为我修好了。


0
投票

当我将名为“Resources”的文件夹添加为“Create folder references”时,当我将“Resources”重命名为另一个随机名称时,会出现此问题,此问题就消失了。

希望它会有所帮助。


10
投票

我正在争夺大约2-3个小时来使用Parse API对项目进行编码。原来,嵌入式框架导致了这个问题。确保设置“复制代码签名”(见图)。如果不起作用,请从列表中删除Parse和Bolts框架并将其从项目中删除,然后再次添加它们。


9
投票

刚解决了同样的问题。我创建了一个包含我的图标的资源文件夹,然后通过右键单击>添加文件> [选择资源文件夹]将其添加到我的项目中。显然这是一个坏主意。

而是在项目中创建一个新组(在我的例子中称为“资源”),然后右键单击>向其中添加文件,然后选择单个文件。项目立即建成。


7
投票

对我有用的是认识到Xcode无法访问证书。请检查Xcode是否可以访问您的证书。转到Keychain Access - > Certificates - >打开Cert并双击私钥 - >选择Access Control

enter image description here


6
投票

对我来说,我刚刚更新到Xcode 8,并将我的Swift 2.2代码转换为Swift 3代码,我在单元测试和UI测试中遇到错误。我刚刚清理完毕,然后所有的错误都消失了。


2
投票

对于将来遇到此问题的任何人(谁不想重建他们的项目),还有一个问题是您的产品名称中是否有空格。我建议您浏览项目和目标的属性(右键单击 - >获取信息)。对于我的项目,唯一需要空格的地方是用于捆绑显示名称的plist。


2
投票

经过几个小时的谷歌搜索和尝试不同的东西,这就是为我解决的问题:

  1. 确保Keychain Access上的系统>证书选项卡中没有证书。从那里删除所有重复的证书。
  2. 除了开发人员证书之外,还要在配置门户的证书下安装WWDR中间证书,并确保在Keychain Access的“登录”>“证书”选项卡中看到它。
© www.soinside.com 2019 - 2024. All rights reserved.