22

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

Swift stdlib 工具错误

编译日志的结尾如下所示:

/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'
}

非常奇怪的是,如果我将包含项目的文件夹复制到我的桌面,它确实编译没有错误。如果我将它复制到其他地方,它会出错。来回移动它几次以验证,最后在第三次移动之后,它在桌面上也出现错误。

有任何想法吗?

提前谢谢了。

4

8 回答 8

18

我今天早些时候有同样的问题。

我是 Xcode 的新手,速度很快,刚刚开始尝试。在第一个教程中,它建议为模拟器编译,然后尝试为您的设备编译。

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

我阅读了一些关于同一主题的堆栈溢出查询,并找到了一个建议重新启动 Mac 的查询。

这对我有用。

  1. 重新启动你的 Mac
  2. 打开你的 Xcode 项目
  3. 选择您的设备作为目标
  4. 编译
  5. 输入钥匙串密码,然后单击允许或始终允许
于 2017-11-24T20:52:09.990 回答
14

症状的不确定性使我认为这是 XcodeDerivedData文件夹中过时数据的问题。

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

删除这个文件夹的内容没有问题,因为 Xcode 会在丢失时重新创建它需要的内容。

于 2016-12-05T14:25:00.663 回答
5

如果清除DerivedData对您不起作用,请尝试重新下载所有配置文件,然后确保您的认证中有iOS 开发

您可以通过检查来确保:打开 Xcode → Xcode → Preferences → Accounts。在列表中单击您的 appleId,单击Download All Profiles,然后等待它下载所有配置文件。然后单击管理认证 → 单击+符号 → iOS 开发

于 2017-09-10T07:43:53.607 回答
5

一个简单的重启为我解决了这个问题。

于 2018-01-11T14:08:07.203 回答
2

在我的特殊情况下,删除DerivedData目录和重新启动计算机都不起作用。

当我Swift stdlib tool Error被 Xcode 提示输入我的系统/root 密码以允许访问钥匙串中的密钥并且我输入了我的密码但我点击了允许按钮。

这导致 Xcode 不停地再次提示我输入密码,无论我输入多少次它都不会接受它。然后我错误地按下Esc了键,假设 Xcode 第一次接受了我的密码,但只是出现了故障。

尽管如此,我错了,从那时起,它就再也没有提示我输入密码来访问我的钥匙串密钥,而是每次我尝试构建和运行Swift stdlib tool Error时,当我尝试在我的应用程序上运行我的应用程序时,它都会抱怨该错误iOS 设备。

为了解决这个问题,我做了以下事情:

  1. 根据此 Apple 文档删除了我的登录钥匙串:如有必要,请创建新的登录钥匙串
  2. 删除了我保存在 Xcode 中的 Apple ID(免费)配置文件(即 Preferences > Accounts ),因为它与我的旧登录钥匙串相关联。
  3. 重新启动了我的电脑。
  4. 重新创建了我的 Apple ID(免费)配置文件(这将再次提示您输入系统密码以访问钥匙串中的密钥。这次输入密码,但不要单击“允许”按钮,而是单击“始终允许”按钮。不确定为什么这有效,但确实有效。

此解决方案的一个主要警告:

删除您的登录钥匙串将导致您的计算机将您从许多您以前可能保存过密码的应用程序中注销。例如,我使用 Spark 邮件应用程序客户端,它导致我重新输入了我的个人电子邮件 (Gmail) 帐户密码,它还让我退出了 Evernote 应用程序。所以,请注意!尽管如此,这对我来说并没有什么大不了的,因为我可以简单地再次登录。最糟糕的是,这很烦人。

于 2018-03-13T21:27:27.193 回答
2

与 racl101 ( https://stackoverflow.com/a/49266114/3612595 ) 一样,删除 DerivedData 目录和重新启动计算机都没有解决问题。

为避免删除登录钥匙串,以下解决了我的问题:

  1. 关闭 Xcode
  2. 更改登录钥匙串密码(更改为当前密码以外的其他密码)
  3. 重新打开您的 Xcode 项目并尝试再次编译。当提示您输入密码时,选择“始终允许”

如果您希望将登录钥匙串密码更改回原始值,请重复此过程。

于 2018-07-06T03:44:55.353 回答
1

我的成功3步:

1) 重启设备

2)重启Mac

3)删除文件夹 /Users/ YOR-NAME /Library/Developer/Xcode/DerivedData/ (在您的错误报告中列出)

于 2018-05-07T19:16:20.057 回答
1

我今天早些时候有同样的问题。

我是 Xcode 的新手,速度很快,刚刚开始尝试。在第一个教程中,它建议为模拟器编译,然后尝试为您的设备编译。

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

  • 使用新的捆绑标识符来创建新证书。在这之后
  • 输入您的钥匙串密码,默认为您的系统密码
于 2018-07-27T07:29:29.923 回答