创建自己的cocoapod管理库

通常情况下,如果项目中使用了cocoapods来管理项目第三方框架,那么在/user/(name)/.cocoapods/repos目录下都会有一个master文件夹用来管理cocoapods中所有的spec文件,像这样

创建自己的cocoapod管理库_第1张图片
屏幕快照 2018-01-25 上午11.27.37.png

cocoapods有自己的一套管理的方式。其在github上的路径为https://github.com/CocoaPods/Specs.git

当我们执行pod update的时候,通常会先看到

Update all pods
Updating local specs repositories

其实这就是去这个路径下更新资源去了。我们使用pod search的时候搜索的内容也都在这里。

如果我们要让自己的项目支持cocoapods,那么我们做的spec文件实际上也是上传到了这里。

在实际做项目的时候,可能我们需要将自己项目中的基础框架,甚至是与业务相关的功能封装成一个私有的pod包,比如:自己封装的网络层、会员模块、商品模块等都是单独的一个可独立运行的工程,他们最终都会成为一个pod私有库提供给主工程使用。这个时候我们的项目就需要私有的pod库,私有库中的spec文件不会在cocoapods的master中搜索到,也就是说别人无法使用。

制作方法

一:创建自己私有的source index

第一步是模仿Cocoapods的方式创建一个自己的spec文件的索引,在自己的git上创建一个Git工程CodingSpec,这个名称随意。
然后执行

pod repo add CodingSpec [git的目录地址]

CodingSpec这个名称就跟Cocoapods默认的master一样,可以按照自己工程的名称取一个。
执行完毕后,你会发现在原来的/.cocoapods/repos/目录下会多一个CodingSpec,其实就是将CodingSpec从远端clone到了本地。

二:创建自己的spec文件

创建和验证spec跟开源到Cocoapods没有什么区别,网上很多教程。这里简单叙述:

  • 创建好自己的项目,并跟git地址进行绑定
git init
git add .
git commit -m 'init'
git remote add origin [git url]
git push -u origin master
  • 创建一个podspec文件,并将内容填写完毕
pod spec create SpecTest
  • 设置好tag,这个tag需要跟spec文件中的sorce制定的版本号相同
git tag 0.0.1
git push --tags
git push origin  master
  • 验证spec文件
pod spec lint SpecTest.podspec

同时验证本地和远端
或者

pod lib lint

只验证本地
如果验证出现问题,需要按照提示进行修复。验证通过时会提示

SpecTest.podspec passed validation.

这里有一点要说明的是,如果远端验证出现了问题,做了修改后需要再次验证,最好可以现将原有的tag删除,提交代码后再创建新的tag。

git tag -d 0.0.1
git push origin :refs/tags/0.0.1
  • 将spec文件推送到本地索引和远端
    这一步跟开源到Cocoapods有点区别是需要在push后面添加上自己的索引名字CodingSpec,私有库还需要添加资源--sources=
pod repo push CodingSpec SpecTest.podspec --allow-warnings --use-libraries --sources='http://gitPath.git'

这行命令会再次验证一次spec文件,如果推送成功会提示

Pushing the `CodingSpec' repo
  • 验证一下是否可以正常搜索到
pod search SpecTest

如果一切正常,这时候应该可以搜索到,不过搜索的结果里面会标明是在Cocoapods中搜索到的。

三:使用一下看看

  • 创建一个demo工程,配置好Podfile文件
source 'https://path/CodingSpec.git'

platform :ios, '8.0'
inhibit_all_warnings!
target 'SpecTestDemo' do
pod 'SpecTest', '~> 0.0.1'
end
  • 更新
pod update

更新的时候如果看输出日志,会发现:repo下创建的所有的资源索引都更新了一下。

  • 打开demo工程运行一下,一切正常。恭喜你,已完成私有库创建。

后记,在这个过程中也是遇到了一些问题,尤其是在验证spec文件的时候。这个都在网上搜索到了解决方案,因为都是一些常见问题。有关遇到的问题,如果有必要,后续会总结更新。

PS:当然如果不做本地索引直接在podfile里面
pod 'SpecTest',:git=>"https://path/SpecTest.git"也是可以的,就是版本控制不知道怎么做

TIPS:
提交pod trunk push后,直接搜索如果搜索不到,需要删除索引文件,再搜索,会自动更新索引文件

rm ~/Library/Caches/CocoaPods/search_index.json

官方TIP:

  • Use pod install to install new pods in your project. Even if you already have a Podfile and ran pod install before; so even if you are just adding/removing pods to a project already using CocoaPods.
  • Use pod update [PODNAME] only when you want to update pods to a newer version.

你可能感兴趣的:(创建自己的cocoapod管理库)