cocoapods原理


首先阅读Podfile文件

排查版本控制和冲突

加载源码,存放在~/Library/Caches/CocoaPods中

生成pod.xcodeproj

在cocoapods安装完成以后,在用户的~/.cocoapods/repos/master/Specs路径下是cocoapods收录的所有库的配置信息,在Specs目录下分了3层,以0-f来命名

Spec内的框架每一个版本并不是具体的代码,而是一个json文件,里边记录着该框架当前选中的版本的详细信息,包括作者,github位置等等

我们在使用cocoapods前,都会生成一个podfile文件,文件中注明我们需要的第三方以及第三方的版本信息

pod install:执行该命令时,如果Podfile.lock文件存在,则直接从此文件中读取框架信息并且只下载Podfile.lock文件中指定的版本安装,对于不在Podfile.lock文件中的pod库,pod install命令会搜索这个pod库在Podfile文件中指定的版本来安装,安装完毕更新Podfile.lock文件;如果Podfile.lock不存在, 则会读取Podfile文件内的框架信息,然后执行下载并且根据下载好的框架信息, 生成Podfile.lock文件.

pod update :  只有当你想要更新pod库的版本时才使用pod update;它不管Podfile.lock是否存在, 都会读取Podfile文件的的框架信息去下载安装,下载好之后, 再根据下载好的框架信息, 生成Podfile.lock文件.覆盖掉之前的Podfile.lock文件

pod setup:执行pod setup时,CocoaPods 会将第三方的podspec索引文件更新到本地的~/.cocoapods/repos目录下

pod安装成功之后一个首先的操作就是执行命令:pod setup(非必需)

 *  如果没有执行过pod setup,那用户根目录下~找不到.cocoapods/repos目录的,没有创建这个目录。

 *  如果执行pod setup,并且命令没有执行成功,那么会创建~/.cocoapods/repos目录,只不过目录是空的。

 *  如果执行pod setup,并且命令执行成功,说明把github上的Podsepc文件更新到本地,那么会创建~/.cocoapods/repos目录,并且repos目录里有一个master目录,这个master目录保存的就是github上所有第三方开源库的Podspec索引文件。

 *  当我们使用pod install或者pod setup时,会自动在~/.cocoapods/repo目录下更新项目需要的podspec索引文件如下:

 *  目录~/.cocoapods/repos/这个目录存储远端的podspec文件到本地。master是所有第三方的pod spec索引文件。其他的使我们自定义的podspec索引文件。

 *  目录~/Library/Caches/CocoaPods/这个目录就是缓存文件的存储目录。

如果我们使用pod search xxx 提示没有找到,但是我们这个第三方确实存在。

1.我们可以使用pod setup更新本地pod spec索引文件。然后pod search xxx

2.按照1的方法如果还是pod search xxx找不到,那我们就把~/Library/Caches/CocoaPods/的缓存文件删除。然后pod setup。最后pod search xxx这样应该就可以了



链接:https://www.jianshu.com/p/161aab7ee241