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

Posted Cocoa开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组件化远程私有库解决方案(cocoapods基于git svn)----高级版相关的知识,希望对你有一定的参考价值。

前言


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


郑重声明


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


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



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


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



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


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


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



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


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


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


pod repo-svn add Name 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 文件编写



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文件编写



 

可能会出现以下问题


  1. pod install 报错找不到组件


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

2>路径不对


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



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


一周精选

CocoaChina


CocoaChina

全球最大

苹果开发中文社区


以上是关于组件化远程私有库解决方案(cocoapods基于git svn)----高级版的主要内容,如果未能解决你的问题,请参考以下文章

基于SVN服务器及cocoapods-repo-svn插件进行组件化私有库管理

组件化开发-002-Cocoapods远程私有库使用(Private Repo)

iOS组件化-利用CocoaPods拆分项目和私有化

iOS代码组件化(利用CocoaPods创建私有库)

iOS代码组件化(利用CocoaPods创建私有库)

组件化开发3-cocoaPods私有库制作