本地私有库不能满足团队开发的需要,存在一下问题:
- 需要主动指明路径,然后库的本地位置就不能动了,否则Podfile中又要修改path路径;
- 版本升级不好维护,无法安装0.1版本或0.2版本,因为本地库没法打标签;
- 多人合作开发非常不方便,因为库只是在本地的个人电脑上,团队的小伙伴没法用。
所以必须要建立远程私有库。
了解一些远程私有库的知识,先来看看cocoaPods官方的索引库的位置:
查看本地库
pod repo,可以看到,目前只有master这一个库;
一、创建自己的索引库:远程私有的和本地私有的
- 码市上先建好私有索引项目(也就是个普通的私有项目,只要忽略文件就行了,许可证书不用,反正是私有的);
- 命令行cd进入repos文件夹(/Users/UserName/.cocoapods/repos);
- pod repo add LFSpec0707 git@git.coding.net:mylovell/LFSpec0707.git;(SSH方式,需要先设置公钥,见本文)
- repos下多了个LFSpec0707索引库,
pod repo
可以看到有两个库,如下图。
二、本地私有库上传到远程
-
远程创建好项目: 码市上创建LFFMBase私有空壳项目(开源许可证书和忽略文件都不要,要全空,否则第一次上传代码要先合并代码
git pull origin master --allow-unrelated-histories
,然后还要处理忽略文件和许可证书的冲突,麻烦,要么就pod模板里面的忽略文件和许可证书先删再合并),远程链接备用; - 本地准备好私有库的文件:pod lib create LFFMBase创建pod模板(这样测试工程Example相关文件和库相关文件都有了),拖入自己的组件库替代ReplaceMe.m,测试工程的Podfile的path指向本地库,pod install安装下,编译;
- 提交库文件:git add . ,git commit ,git ,git remote add origin https:地址,git push origin master,git tag '0.1.0' ,git push --tags 。如此以来,该远程库既有测试工程Example,又有库文件。
-
提交podspec文件:修改podspec文件,本地验证podspec,
pod lib lint
(验证当前文件夹下的podspec文件),pod spec lint
(远程验证),如果验证遇到问题见下文。pod repo
先查看本地有哪些索引库。提交podspec到本地私有索引库LFSpec0707,pod repo push LFSpec0707 LFFMBase.podspec
(即提交LFFMBase.podspec到LFSpec0707)。push相关过程见图(podspec文件push的过程.png) - search检验:pod search LFFMBase,可以搜索到库了。
-
宿主工程安装远程库:在宿主工程中安装使用LFFMBase,注意修改Podfile文件中要添加两个source。先
pod repo
查看有哪些库,在把私有source和共有cocoaPods的source都写进Podfile中,这样就会从这两个私有和共有source中去查找。pod install。(Podfile中添加私有和公有source.png)
~~~关于设置公钥、私钥
1.私钥存放处
2.命令行获取公钥私钥
ssh-keygen,默认路径,不设密码,按了4下回车,出来两个文件。
~~~本地验证pod lib lint
、远程验证pod spec lint
提交podspec文件之前,先验证下。如果不本地和远程验证,在提交podspec文件的时候也会进行这两步验证。为了方便解决问题,建议单独进行这两步。
本地验证
pod lib lint
:验证当前文件夹(open .)下的podspec文件。本地验证不会验证s.source,不会验证tag。远程验证
pod spec lint
:会验证s.source和tag。其中tag,远程库和本地都要有,且要一样,所以记得打tag。否则远程验证失败,如下图。--allow-warnings
~~~提交代码到远程,复习下
- 进入文件夹
cd - 提交到远程
git add .
git commit -m 'vvvvv'
git remote // 查看是否有关联远程库
git remote add origin https://git.coding.net/......... //关联远程库
git push origin master - 打标签tag
git tag // 查看tag标签
git tag '0.1.0' // 打tag
git push --tags // 提交tags
~~~提交podspec文件,复习下
- pod repo // 看下本地索引库有哪些,有没自己要的
- pod lib lint // 本地验证
- pod spec lint //远程验证
- pod repo push LFSpec0707 LFFMBase.podspec // 提交某podspec文件到LFSpec0707私有索引库,该私有索引库再传文件到远程库(podspec文件push的过程.png)。
- --allow-warnings
~~~远程库和本地库位置
~~~ 位置:索引库和已安装了的库
已安装了的库:/Users/fengluo/Library/Caches/CocoaPods
所有描述文件存放处:/Users/fengluo/.cocoapods/repos
~~~ search_index.json
所在路径:/Users/chemf/Library/Caches/CocoaPods/search_index.json
search_index.json索引文件是由官方的master描述文件库和私有描述文件库共同建立的:可以推出当你pod搜索一个库时,不管是私有还是cocoaPods公有,都会进入这个json索引文件。
~~~ 一些疑问 / 碰到的问题:私有库命名可以搜索到,却无法pod install
问题:一开始用码市,后来用码云,可能是本地缓存的码市的用户名和密码,导致无法进入码云。待解决。。。
解决:在宿主工程的Podfile文件中没有添加私有库公有库的source,添加之后可以Pod install安装了。