下方就是Github上CocoaPods的Specs仓库。根据该仓库的README中的信息,我们可以看出该仓库中存储的是所有可以用pod 导入的公有仓库的release版本的podspec文件。这些公开的仓库必须遵循MIT协议的。具体如下所示:
下方就是我们从CocoaPods中的Specs仓库里边找到的上面我们发布的测试工程。在我们工程的文件夹下对应的是一个个版本(git仓库的tag号),每个tag号下方对应的就是该版本的podspec文件。我们在发布我们的工程到CocoaPods的时,本质上是根据我们的工程名称创建相关的文件夹,然后根据我们的tag号创建子文件夹,然后在子文件夹中上传当前版本所对应的podspec文件。
2、三方依赖的加载路径
看完Specs仓库里边的内容后,接下来我们来看一下我们CocoaPods是如何通过我们工程中的Podfile文件来加载相关的三方依赖库的。
首先我们来看一下Podfile中的基本结构。在Podfile文件中,其中的 source 参数就是用来指定依赖仓库所对应的Specs仓库的, source的默认地址就是CocoaPods的 Specs 仓库。如果我们有自己的私有 Specs 仓库,也可以指定我们自己的Specs仓库地址。
在Podfile中可以指定多个 Specs 仓库的地址,稍后我们会创建我们自己的Specs仓库,然后在该Specs仓库中上次发布我们自己使用的依赖库。
下方是CocoaPods中加载依赖仓库代码的路径,根据自己的理解,寻找源码路径大体上分为下方几个步骤:
通过Podfile这个 source 指定的Specs仓库的地址,我们就可以找到相关的Specs仓库。
找到Specs仓库后,再根据 Podfile 中所提供的仓库依赖配置(比如 pod 'AFNetWorkiing', ~>'2.6.3'),找到指定的依赖仓库和相关的版本。
然后找到该版本所对应的 xxx.podspec 文件。
然后再根据 xxx.podsepce 文件中的相关配置信息找到该仓库所对应的源码的git地址。
最后根据源码的git地址加载三方仓库到Pods工程中统一管理。
下方是根据上方的步骤所画的简图。CocoaPods真正的工作应该比下方要复杂的多,
六、创建私有的Specs仓库
上面看完 CocoaPods 仓库的 Specs 文件后,接下来我们来看一下如何创建私有的 Specs 仓库。当我们的工程比较大时,尤其是使用模块化开发是,我们的工程会依赖好多其他的仓库。创建私有的Specs仓库来管理私有的依赖仓库是很有必要的。接下来就介绍一下如何创建私有的Sepcs仓库,然后把我们私有的依赖库发布到我们自己的Specs仓库中。
下方以Github为例,会在Github上创建相关的Specs
1、创建私有Specs Repo首先我们需要做的是在Github上创建一个名为Specs的仓库(该仓库的名字可以根据具体情况命名)。然后在本地关联该Specs仓库到Pod的仓库中。
pod repo add SpecsName SpecsGitAddr
添加完毕后我们可使用 pod repo 命令来查看该仓库是否正常添加到CocoaPods中。
我看可以用下方命令来看一下该Specs仓库是否可用:
pod repo lint xxxxSpecsName
2、将私有依赖库工布到自己的Specs仓库中
经过第一步就算创建并关联好了我们私有的Specs仓库了,接下来我们就该将私有的依赖仓库发布到我们自己的Specs仓库中了。这一发布的过程与之前我们将工程发布到CocoaPods的Specs仓库中是一致的。只不过是将CocoaPods的Specs名称换成了上面我们配置的MyCustomSpec名称。具体如下所示:
pod repo push XxxSpecs xxxx.podspec