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