转载

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

原文

前言

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

郑重申明

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

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

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

git 操作方式

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

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

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

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

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

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

http://code.svnspot.com

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

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

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' do
plugin 'cocoapods-repo-svn', :sources => [
        'http://10.211.55.3/svn/SpecRepo' # 远程索引库地址
    ] 
use_frameworks!
pod 'BCBaseLib'  # 本地 svn 私有库
pod 'AFNetworking'    # 可直接 pod 公开三方库
end

可能会出现以下问题

pod install 报错找不到组件

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

2>路径不对

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

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

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

正文到此结束
Loading...