虽然国内实际开发用 Swift Package Manager(后称 SPM)的比较少,但是国外的一些开源库里却经常用到。所以经常遇到项目 clone 下来之后,SPM 加载失败导致项目无法运行的问题。

网上关于 SPM 加速的文章也有很多,方法也是五花八门,本文挑选几个进行记录。

根本问题

根本问题还是 Xcode 内部服务无法连接代理,导致访问 Github 经常超时。
所以解决方案还是要从代理入手。

路由器端直接设置代理

在路由器上直接设置代理,从网络源头解决问题。但是哪怕是在一些公司,也不太方便添加软路由等方法做这些操作。有条件的个人可以搞一下。

通过命令行直接拉取

参考 如何让swift package manager走代理,作者 @范德萨就是我

我最后是通过这个方式来解决的,感觉相当来说更简单一些。

具体方法:

  1. 首先是打开终端,然后在终端内按照 “为终端设置代理” 的方法,设置 https_proxyhttp_proxyall_proxy

  2. 项目根目录下 执行下列命令:

xcodebuild -resolvePackageDependencies -scmProvider system

通过命令行直接拉取 SPM 依赖,执行完成后打开项目即可。

有的文章可能提到可以为 git config 设置代理,其命令为:

# 需要将端口替换成自己的端口
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'

这里我没有进行尝试,有想法的读者可以自行尝试。

代理 Xcode

既然 Xcode 内的 git 服务无法被 SSR、ClashX 等代理工具简单的影响,那么我们有没有其他的办法来做到这点呢?答案是有的:可以通过 Proxifier 进行拦截,然后再走代理。

但是 Proxifier 是收费的(虽然提供了免费试用),我尝试搜索过免费平替,但是最终没有找到... 所以也没有继续尝试该方法。

有条件的伙伴可以查看 Xcode设置SPM代理 这篇文章,里面有详细的介绍。