组件12:远程私有库方案(重要)

本地私有库不能满足团队开发的需要,存在一下问题:

  1. 需要主动指明路径,然后库的本地位置就不能动了,否则Podfile中又要修改path路径;
  2. 版本升级不好维护,无法安装0.1版本或0.2版本,因为本地库没法打标签;
  3. 多人合作开发非常不方便,因为库只是在本地的个人电脑上,团队的小伙伴没法用。
    所以必须要建立远程私有库。

了解一些远程私有库的知识,先来看看cocoaPods官方的索引库的位置:


组件12:远程私有库方案(重要)_第1张图片
cocoaPods官方的索引库的位置.png

查看本地库
pod repo,可以看到,目前只有master这一个库;

组件12:远程私有库方案(重要)_第2张图片
本地目前只有一个cocoaPods官方的索引库.png
一、创建自己的索引库:远程私有的和本地私有的
  1. 码市上先建好私有索引项目(也就是个普通的私有项目,只要忽略文件就行了,许可证书不用,反正是私有的);
  2. 命令行cd进入repos文件夹(/Users/UserName/.cocoapods/repos);
  3. pod repo add LFSpec0707 [email protected]:mylovell/LFSpec0707.git;(SSH方式,需要先设置公钥,见本文)
  4. repos下多了个LFSpec0707索引库,pod repo可以看到有两个库,如下图。
自己的远程索引库LFSpec0707.png
二、本地私有库上传到远程
  1. 远程创建好项目: 码市上创建LFFMBase私有空壳项目(开源许可证书和忽略文件都不要,要全空,否则第一次上传代码要先合并代码git pull origin master --allow-unrelated-histories,然后还要处理忽略文件和许可证书的冲突,麻烦,要么就pod模板里面的忽略文件和许可证书先删再合并),远程链接备用;
  2. 本地准备好私有库的文件:pod lib create LFFMBase创建pod模板(这样测试工程Example相关文件和库相关文件都有了),拖入自己的组件库替代ReplaceMe.m,测试工程的Podfile的path指向本地库,pod install安装下,编译;
  3. 提交库文件:git add . ,git commit ,git ,git remote add origin https:地址,git push origin master,git tag '0.1.0' ,git push --tags 。如此以来,该远程库既有测试工程Example,又有库文件。
  4. 提交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)
  5. search检验:pod search LFFMBase,可以搜索到库了。
  6. 宿主工程安装远程库:在宿主工程中安装使用LFFMBase,注意修改Podfile文件中要添加两个source。先pod repo查看有哪些库,在把私有source和共有cocoaPods的source都写进Podfile中,这样就会从这两个私有和共有source中去查找。pod install。(Podfile中添加私有和公有source.png)
组件12:远程私有库方案(重要)_第3张图片
本地库要上传到远程的文件.png
组件12:远程私有库方案(重要)_第4张图片
podspec文件push的过程.png
组件12:远程私有库方案(重要)_第5张图片
Podfile中添加私有和公有source.png
~~~关于设置公钥、私钥

1.私钥存放处


组件12:远程私有库方案(重要)_第6张图片
私钥存放处.png

2.命令行获取公钥私钥
ssh-keygen,默认路径,不设密码,按了4下回车,出来两个文件。

组件12:远程私有库方案(重要)_第7张图片
公钥私钥.png
组件12:远程私有库方案(重要)_第8张图片
Snip20170707_38.png

~~~本地验证pod lib lint、远程验证pod spec lint

提交podspec文件之前,先验证下。如果不本地和远程验证,在提交podspec文件的时候也会进行这两步验证。为了方便解决问题,建议单独进行这两步。

  1. 本地验证pod lib lint:验证当前文件夹(open .)下的podspec文件。本地验证不会验证s.source,不会验证tag。

  2. 远程验证pod spec lint:会验证s.source和tag。其中tag,远程库和本地都要有,且要一样,所以记得打tag。否则远程验证失败,如下图。

  3. --allow-warnings

组件12:远程私有库方案(重要)_第9张图片
未打tag造成的远程验证问题.png
~~~提交代码到远程,复习下
  1. 进入文件夹
    cd
  2. 提交到远程
    git add .
    git commit -m 'vvvvv'
    git remote // 查看是否有关联远程库
    git remote add origin https://git.coding.net/......... //关联远程库
    git push origin master
  3. 打标签tag
    git tag // 查看tag标签
    git tag '0.1.0' // 打tag
    git push --tags // 提交tags
~~~提交podspec文件,复习下
  1. pod repo // 看下本地索引库有哪些,有没自己要的
  2. pod lib lint // 本地验证
  3. pod spec lint //远程验证
  4. pod repo push LFSpec0707 LFFMBase.podspec // 提交某podspec文件到LFSpec0707私有索引库,该私有索引库再传文件到远程库(podspec文件push的过程.png)。
  5. --allow-warnings
~~~远程库和本地库位置
组件12:远程私有库方案(重要)_第10张图片
远程库和本地库位置20170707.png
~~~ 位置:索引库和已安装了的库

已安装了的库:/Users/fengluo/Library/Caches/CocoaPods

组件12:远程私有库方案(重要)_第11张图片
已安装了的库.png

所有描述文件存放处:/Users/fengluo/.cocoapods/repos

组件12:远程私有库方案(重要)_第12张图片
描述文件存放处.png
~~~ search_index.json

所在路径:/Users/chemf/Library/Caches/CocoaPods/search_index.json

search_index.json索引文件是由官方的master描述文件库和私有描述文件库共同建立的:可以推出当你pod搜索一个库时,不管是私有还是cocoaPods公有,都会进入这个json索引文件。

组件12:远程私有库方案(重要)_第13张图片
search_index.json索引文件与官方的master描述文件库和私有描述文件库的关系.png
~~~ 一些疑问 / 碰到的问题:私有库命名可以搜索到,却无法pod install

问题:一开始用码市,后来用码云,可能是本地缓存的码市的用户名和密码,导致无法进入码云。待解决。。。

Snip20170707_62.png

解决:在宿主工程的Podfile文件中没有添加私有库公有库的source,添加之后可以Pod install安装了。

组件12:远程私有库方案(重要)_第14张图片
记得添加私有库和公有库的source.png

你可能感兴趣的:(组件12:远程私有库方案(重要))