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

前言

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

郑重申明

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

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

git 操作方式

1.首先我们需要一个远程托管仓库,git或者svn。
2.必须明确一个概念我们需要两个远程仓库,一个是远程的索引库和一个远程的源码库,cocoapods 基本原理也是这样的,平时采用的方式和我们组件化唯一区别就是将公有变为私有。
我们通过将远程索引库添加到本地,然后在本地生成索引文件,当 pod 'LibBase',pod install,首先会在本地索引文件中查找到相应库文件地址进行本地clone,这样我们就可以使用了。
3.当我们将代码传到远程源码仓库以后,需要在进行第5步操作,向私有索引库提交,这里需要解释一下这个过程,当我们通过命令行操作向本地私有索引库推入索引文件,同时也会添加到远程索引库,这样当小伙伴要使用你的库,只需要更新他本地的就可以了。

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

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

http://code.svnspot.com
这里允许创建两个库,刚好满足我们私有索引库和代码库的创建,

svn 远程测试库

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

pod repo-svn add Name Url

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

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

这里我远程跟本地名字不一样

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

pod repo

索引库本地以及远程地址

这里就有我们的索引库 SpecsRepo

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

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

4.创建本地私有模板库

pod lib create Name

私有模板库

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

5.编写podsepc 文件

podsepc 文件编写

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

pod lib lint

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

6.远程打标签tag

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


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

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

pod repo-svn push Name xx.podsepc

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

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

pod search BCBaseLib

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

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

可能会出现以下问题

  1. pod install 报错找不到组件

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

2>路径不对


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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    拂晓的云阅读 11,993评论 6 23
  • 本地私有库不能满足团队开发的需要,存在一下问题: 需要主动指明路径,然后库的本地位置就不能动了,否则Podfile...
    Lovell_阅读 2,981评论 0 0
  • 最近想为公司搭建cocoapods私有库框架,老早之前做过,踩过不少坑,想不到又一次掉坑里。果真是好记性不如烂笔头...
    生光阅读 5,451评论 0 4
  • 首先,也许有人觉得,开发使用远程私有库很麻烦,还不如直接写好,拖到项目中直接使用来的方便。可我想说的是,在一个小的...
    悠闲自在的蜗牛阅读 6,568评论 0 10
  • 作者:如秋 柳梢青 祝姨婆百岁寿 和风细转, 合家同欢, 对饮蓬莱。 鹤语寄春, 蟠桃捧宴, 玉烛调元。 福祉如山...
    秋之韵的空间阅读 2,890评论 0 3