在使用 Swift Package Manager(SPM)添加依赖时,可能会遇到下载缓慢或下载失败的情况。即使使用代理软件也无法解决问题,因为 Xcode 使用的是内置的 git 而非系统默认的 git。因此,代理软件或者使用 git config --global http.proxy 的方式并不能起作用。

鉴于此,有以下几个解决方案:

  • 方案一:代理 Xcode 内置的 git

    可以使用 proxifier 软件,它可以让指定的进程经过代理。使用起来较为复杂,需要进行一些配置。这里主要介绍第二种方案。

  • 方案二:切换 Xcode 内置的 git,再配置代理

    使用 defaults write com.apple.dt.Xcode IDEPackageSupportUseBuiltinSCM YES 命令,可以全局切换内置 git

    1. 切换内置默认 git
    defaults write com.apple.dt.Xcode IDEPackageSupportUseBuiltinSCM YES
    
    1. 设置代理

    如果使用 clash 的话,{yourprox} 默认为 socks5://127.0.0.1:7890 或者 http://127.0.0.1:7890,请根据自己实际使用的代理软件进行调整。 --global 为全局设置,如果只设置当前项目,可移除 --global

    # 设置所有
    git config --global http.proxy {yourproxy} && git config --global https.proxy {yourproxy}
    
    # 单独给 Github 配置代理
    git config --global http.https://github.com.proxy {yourproxy} && git config --global https.https://github.com.proxy {yourproxy}
    
    1. 查看刚刚的设置
    git config --list --global
    
    1. 恢复默认
    defaults write com.apple.dt.Xcode IDEPackageSupportUseBuiltinSCM NO
    # 若第二步中设置所有,则使用以下命令进行还原
    git config --global --unset http.proxy && git config --global --unset https.proxy
    # 若第二步中单独设置 Github,则使用以下命令进行还原
    git config --global --unset http.https://github.com.proxy && git config --unset --global https.https://github.com.proxy
    

参考资料:

  1. Configure Git to use a proxy