Swift标准库工具错误

22

我在使用Xcode 8.1和Swift 3编译时遇到了以下错误:

Swift标准库工具错误

编译日志的结尾如下:

/Users/..../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/.../Contents/Frameworks/libswiftCore.dylib: replacing existing signature
/Users/..../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/.../Contents/Frameworks/libswiftCore.dylib: CSSMERR_CSP_INVALID_CONTEXT_HANDLE
In architecture: x86_64
Probing signature of /Users/..../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/.../Contents/Frameworks/libswiftXPC.dylib
  /usr/bin/codesign '-r-' '--display' '/Users/..../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/.../Contents/Frameworks/libswiftXPC.dylib'
error: Task failed with exit 1 signal 0 {
    /usr/bin/codesign '--force' '--sign' '-' '--verbose' '/Users/..../Library/Developer/Xcode/DerivedData/.../Build/Products/Debug/.../Contents/Frameworks/libswiftCore.dylib'
}
非常奇怪的是,如果我将项目文件夹复制到我的桌面上,它可以编译通过而不会出现错误。如果我将它复制到其他地方,就会出现错误。我反复将其来回移动几次以进行验证,最终在第三次移动后,在桌面上也出现了错误。

有任何想法吗?

非常感谢您的帮助。


1
删除派生数据文件夹对我有用。查看这个 - Kiran KV
删除派生数据对我没有起作用,但重新启动 Mac 完美解决了问题! - Jayprakash Dubey
8个回答

18

今天早些时候我遇到了同样的问题。

我刚刚开始尝试使用Xcode和Swift进行实验,并在最初的教程中,其中建议先编译模拟器,然后再尝试为设备编译。

当我尝试为设备编译时,它要求我输入我的钥匙串密码,第一次我输错了密码,假设这是不必要的,我点击了拒绝访问钥匙串按钮。

我在几个关于同一主题的stackoverflow查询中阅读了一些信息,并找到一个建议重新启动Mac的帖子。

对我来说这起作用了。

  1. 重启您的Mac
  2. 打开您的Xcode项目
  3. 选择您的设备作为目标
  4. 编译
  5. 输入钥匙串密码并点击允许或始终允许

1
点击“运行”以启动应用程序。此时,您可能会收到一个弹出窗口,询问“codesign想要使用您的钥匙串中的密钥...进行签名”。如果是这样,请选择“始终允许”。这是Xcode尝试使用您刚刚创建的新开发证书 - 您只需要首先给予它权限即可。 - 7stud
我曾经遇到同样的问题(将代码库从Swift 2转换为Xcode 8.2.1中的Swift 3之后),在我的情况下删除DerivedData没有效果,但重新启动电脑有所帮助。 - Pavel Lahoda

14

由于症状的非确定性特点,我认为这是Xcode的DerivedData文件夹中数据陈旧导致的问题。

清空/Users/..../Library/Developer/Xcode/DerivedData/的内容,这应该可以解决您的问题。

删除此文件夹的内容并不会造成问题,因为如果缺少所需文件,Xcode会重新创建。


5

我遇到了类似的问题,只需简单重启即可解决。


5
如果清除 DerivedData 没有起作用,尝试重新下载所有配置文件,然后确保您的认证中有 iOS Development
您可以通过以下方式确认:打开 Xcode → Xcode → 首选项 → 帐户。在列表中点击您的 appleId,点击 下载所有配置文件,等待下载完成。然后点击管理认证 → 点击 + 符号 → iOS Development

最好先尝试重新启动,因为重新启动是有效的! - FurkanO

2
与racl101的情况类似(https://dev59.com/llkR5IYBdhLWcg3w9Ryt#49266114),删除DerivedData目录或重启电脑均未解决问题。
为避免删除登录钥匙串,以下方法对我有效:
  1. 关闭Xcode
  2. 更改登录钥匙串密码(不要使用当前密码)
  3. 重新打开Xcode项目并尝试再次编译。在提示输入密码时选择“始终允许”
如果您希望将登录钥匙串密码更改回原始值,请重复此过程。

2
在我的情况下,删除DerivedData目录或重新启动计算机都没有起作用。
我认为在我创建Apple ID(免费)配置文件时遇到Swift stdlib tool Error错误之前,问题是当Xcode提示我输入系统/根密码以允许访问Keychain中的密钥时,我单击了Allow按钮而不是输入密码。
这导致Xcode不停地提示我再次输入密码,无论我尝试多少次,它都不接受。 然后,我错误地按下Esc键,假设Xcode第一次已经接受了我的密码,但实际上只是故障了。
尽管如此,我错了,从那时起,每次尝试构建和运行时,每次我尝试在iOS设备上运行应用程序时,它都会抱怨Swift stdlib tool Error错误。
为了解决这个问题,我执行了以下操作:
  1. 按照此Apple文档中的说明删除了我的登录KeychainCreate a new login keychain, if necessary
  2. 删除了保存在Xcode中的我的Apple ID(免费)配置文件(即“首选项”>帐户),因为它与我的旧登录钥匙串相关联。
  3. 重新启动计算机。
  4. 重新创建了我的Apple ID(免费)配置文件(这将提示您再次输入系统密码以访问Keychain中的密钥。这次,请输入密码,而不是单击Allow按钮,而应单击Always Allow按钮。不确定为什么会起作用,但确实起作用了。
这个解决方案的一个主要注意事项:
删除登录Keychain将使您在许多应用程序上注销,您可能以前已保存了密码。 例如,我使用Spark邮件应用客户端,它导致我必须重新输入我的个人电子邮件(Gmail)帐户密码,它还使我退出Evernote应用程序。因此,请注意!尽管如此,在我的情况下问题不大,因为我可以简单地再次登录。 最糟糕的是令人讨厌。

1
哇,这正是我遇到的问题,而我却没有意识到……感谢您指出这个问题! - Alex Cio

1
我今天早些时候也遇到了同样的问题。
我对Xcode和Swift都很新,刚开始尝试实验。在最初的教程之一中,建议先编译模拟器,然后再尝试为设备编译。
当我为我的设备编译时,它要求输入我的钥匙串密码。第一次尝试时,我输错了密码,假设这不是必需的,我点击了拒绝访问钥匙串按钮。
  • 使用新的包标识符创建新的证书。之后
  • 输入您的钥匙串密码,这是默认情况下的系统密码

1

我的成功三步曲:

1)重新启动设备

2)重启 Mac

3)删除文件夹 /Users/你的用户名/Library/Developer/Xcode/DerivedData/(在您的错误报告中列出)


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