0°

组件化远程私有库解决方案(cocoapods基于git 、svn)—-高级版

内容预览:
  • 3.当我们将代码传到远程源码仓库以后,需要在进行第5步操作,向私有索引...~
  • 3.接下来我们需要将远程源码仓库克隆到本地,采用Cornerstone 工具 两种...~
  • 作者:mark666 链接:http://www.jianshu.com/p/b86da01399d5 來源:简...~

始发于微信公众号: 程序员大咖

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!

组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版


前言


随着业务越来越庞大,在单工程中,app中代码逐渐越来越大,面对高耦合和难以复用的模块,我们就需要进行重构了。而面对多条业务线,组件化是一种优秀的解决方案,将需要的组件以pod私有库形式安装到主工程中,组件间各自独立,解耦,仅仅依赖一个中间件进行通讯。那么对于各个组件托管到远程平台最常用的是git,git的优越性也无需赘言,但是很多公司对于代码管理往往是本公司的svn服务器,本文的重点也是讲解一下svn服务器托管的操作,这在网上资源是很少有正确的,这篇文章带你真正学会cocoapods基于svn托管方式。



郑重声明



本文是一篇高级教程,不提供入门基础教程。


首先我们以git为基础讲解代码托管原理,请看下图:


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版


1.首先我们需要一个远程托管仓库,git或者svn。


2.必须明确一个概念我们需要两个远程仓库,一个是远程的索引库和一个远程的源码库,cocoapods 基本原理也是这样的,平时采用的方式和我们组件化唯一区别就是将公有变为私有。


我们通过将远程索引库添加到本地,然后在本地生成索引文件,当 pod ‘LibBase’,pod install,首先会在本地索引文件中查找到相应库文件地址进行本地clone,这样我们就可以使用了。


3.当我们将代码传到远程源码仓库以后,需要在进行第5步操作,向私有索引库提交,这里需要解释一下这个过程,当我们通过命令行操作向本地私有索引库推入索引文件,同时也会添加到远程索引库,这样当小伙伴要使用你的库,只需要更新他本地的就可以了。


那么以上就是git 方式的主要操作,下面我重点演示svn方式。



1.选用第三方svn服务器作为测试:



http://code.svnspot.com


这里允许创建两个库,刚好满足我们私有索引库和代码库的创建,


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版



2.接下来我们需要将远程索引库,添加到本地,这里为了满足svn 操作我们需要安装一个 cocoapods-repo-svn插件,参考 https://github.com/dustywusty/cocoapods-repo-svn



pod repo-svn add Name Url


这里本地索引库名字尽量保持一致,url 就是远程索引库的地址


然后我们会在.cocoapod看到这个文件夹


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版


然后终端可以查看一下相应的索引库


pod repo


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版


索引库本地以及远程地址


这里就有我们的索引库 SpecsRepo。



3.接下来我们需要将远程源码仓库克隆到本地,采用Cornerstone 工具



两种方式,直接添加远程地址或者通过终端命令克隆下来然后导入。
具体操作不在赘述。



4.创建本地私有模板库



pod lib create Name


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版

私有模板库


我们需要把 .git .gitignore .travis.yml 这是哪个文件删掉,然后将这个库拖入到 svn 本地仓库的 trunk下面。当然这个里面包括你的组件库文件。



5.编写podsepc 文件



组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版

podsepc 文件编写


这里我们需要将原地址改为svn 地址,可以进行本地验证一下


pod lib lint


完成以后使用Cornerstone工具提交代码至远程。



6.远程打标签tag



svn 终端命令行好像没有直接打tag 的命令,我们可以直接通过Cornerstone打tag,需要注意的是标签的tag和podsepc 文件中的版本一致。


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版

远程打标签可以在tag中查看版本



7.最后一步提交spec至私有索引库



pod repo-svn push Name xx.podsepc


需要注意的是cd 到 本地trunk 文件夹目录下,才能包含xx.podsepc 文件。

至此我们大功告成!我们可以通过终端 搜索一下我们的库


pod search BCBaseLib


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版

这里我已经提交了两个版本。



8.使用



Podfile文件编写


platform :ios, ‘8.0’target ‘test’ doplugin ‘cocoapods-repo-svn’, :sources => [        ‘http://10.211.55.3/svn/SpecRepo’ # 远程索引库地址
    ] 
use_frameworks!
pod ‘BCBaseLib’  # 本地 svn 私有库pod ‘AFNetworking’    # 可直接 pod 公开三方库end


 

可能会出现以下问题


  1. pod install 报错找不到组件


可以更新一下本地索引库 pod repo-svn update –no-repo-update

2>路径不对


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版


我在测试中发现该地址不对,折腾了半天才发现 在podspec 文件中 s.source 路径不对,通常产生这种问题大家可以先通过浏览器访问该地址,如果不通就说明该地址不对。


以上呢就是基于svn的所有主要的过程,一些细节问题大家可以自行尝试。


组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版

  • 作者:mark666

  • 链接:http://www.jianshu.com/p/b86da01399d5

  • 來源:简书

  • 程序员大咖整理发布,转载请联系作者获得授权

以上就是:组件化远程私有库解决方案(cocoapods基于git 、svn)----高级版 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论