使用新的 Sierra 更新缓慢的应用程序编译

Slow app compilation with new Sierra update

当我将 mac 更新为 macOS Sierra 10.12.1 时,运行 应用程序在真实设备上的使用时间显着增加。 "Run custom script 'Embed Pods Frameworks'" 和 "Copy Swift standard libraries" 需要 30 分钟以上的时间来构建。

有人遇到同样的问题吗?

检查您的钥匙串。将 Sierra 更新到 10.12.1 后,我的一份证书有 500 多份副本,还有一些证书被复制了数百次。

我删除了所有重复项并只保留了一个,我的代码签名时间从每个框架 30 秒减少到每个框架 1 秒左右。

我不知道证书是如何或为什么重复的,但问题的时间表明这是由于更新 Sierra。

2017-03-23更新

您可以跳过安装 Beta 版 CocoaPods,因为 COCOAPODS_PARALLEL_CODE_SIGN 标志也在当前版本中评估。

原答案

找到了替代解决方案,不是最好的,但至少它正在加速。 它有效(对我来说)

Cocoapods 日前发布了新的测试版。

当 运行 嵌入框架脚本时允许并行代码签名 (https://github.com/CocoaPods/CocoaPods/pull/6088#issuecomment-257441733)

  1. 安装最新的测试版

gem install cocoapods --pre

  1. 转到 Xcode 目标构建设置并单击顶部的 + 图标

  1. COCOAPODS_PARALLEL_CODE_SIGN设置为true

并享受提高的构建速度!

如果钥匙串看起来不错,但存在问题 – 检查首选项并删除此文件中的所有重复项: ~/Library/Preferences/com.apple.security.plist

对于典型设置,此文件必须仅包含一个带有登录钥匙串引用的记录。

上面提到的所有方法都不适合我。有很大帮助的是 resetting the System.keychain,它有 25 MB 的大小。这在我们的 CI 系统上将构建时间最多缩短了 40%。

分析

du -h /Library/Keychains/System.keychain
good: 60K
bad: 25MB

重置

sudo systemkeychain -vfcC [password]

注意:如果您的 System.keychain 中存储了重要的 keys/certs/passwords,您可能需要在执行重置之前导出它们,然后根据需要重新导入它们。这对我来说没有必要。我的新 System.keychain 没有任何内容,构建项目绝对正常。