CocoaPods & pod install 失败与慢等相关问题

相信从事iOS或者macOS开发的,都少不了接触CocoaPods,类似于Android gradle (gradle的功能更为强大、多样,其中的依赖管理部分与CocoaPods类似)。

通俗的说,CocoaPods是依赖库管理工具,原理有点跟Homebrew相似。
它本身是一个项目并上传到GitHub的仓库(https://github.com/CocoaPods/Specs.git),该项目包含着所有依赖库的索引,这些索引又指向各自依赖库的仓库地址。所以这个项目会非常大,而且会越来越大。
首先把该项目下到本地,以后每次做项目 pod {library} 的时候就会先去项目查找该 library 的索引,并从该索引指向的仓库地址下载该 library 。 鉴于网络原因,从GitHub下载比较容易失败,会出现如 RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, the remote end hung up unexpectedly...

于是诞生了很多国内的镜像源,比如清华源,不过在使用过程中发现一些国内的镜像源也不稳定。所以我提供一种更为稳定、简单的方法,最重要的是有助于理解CocoaPods的实现原理。

1、默认已经安装好CocoaPods
2、下载项目,即CocoaPods源,这里提供我forked到码云的仓库

git clone https://gitee.com/Cocoapods-Wand/Specs.git ~/.cocoapods/repos/specs-gitee

下载完毕后,到本地目录查看

cd ~/.cocoapods/repos/specs-gitee
//查看远程仓库地址
git remote -v 
//如果是https://gitee.com/Cocoapods-Wand/Specs.git不需继续操作,如果不是
git remote set-url origin https://gitee.com/Cocoapods-Wand/Specs.git

可选,查看CocoaPods源,其中specs-gitee为刚才下的

pod repo list

3、做自己项目时,在Podfile的首行写上

source 'https://gitee.com/Cocoapods-Wand/Specs.git'

这样执行pod install时就不需要再次下载 git clone https://xxx/CocoaPods/Specs.git
4、以安装 AWSCognitoAuth 依赖库为例,在Podfile中加上

pod 'AWSCognitoAuth'

执行 pod install 长时间后报错Error installing AWSCognitoAuth, unable to open /private/var/folders/xxx: No such file or directory,这是因为从索引指向的仓库地址(一般为GitHub的地址)下载失败。这时进入本地CocoaPods源目录

cd ~/.cocoapods/repos/specs-gitee/Specs/

搜索AWSCognitoAuth,注意搜索范围不是“这台Mac”,选择“Specs”,搜索结果中只有一个“AWSCognitoAuth”目录,进入该目录并选择最新版本子目录,打开文件“AWSCognitoAuth.podspec.json”,修改里面的source地址

"git": "https://github.com/aws/aws-sdk-ios.git"
修改为:
"git": "https://gitee.com/Cocoapods-Wand/aws-sdk-ios.git" //forked到码云仓库

注意:这是因为aws-sdk-ios项目极大,从GitHub下载容易失败,如果是其他比较小的依赖库,即便从GitHub下载也是没问题的。
附:如何forked仓库,在码云网新建仓库最后选择“导入已有仓库”。

再次执行 pod install ,很快就能成功了。


如果觉得对您有所帮助,请点个赞,谢谢您!

你可能感兴趣的:(CocoaPods & pod install 失败与慢等相关问题)