iOS组建化——私有库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sacrifice123/article/details/83958405

私有库顾名思义是私有的,我在GitHub上使用的都是公开库,出于安全与机密考虑,公司级开发都是使用私有库。下面先说几个概念。

一、索引库

我们每创建一个组件都会带有一个 xxx.podspec 的索引文件,这个文件包含组建框架的描述信息、框架名称、版本号、真正的代码存放地址及框架源码远程地址。那么专门用来存放这些索引文件的库就叫做索引库。索引库有本地索引库远程索引库之分。远程索引库就是放在远端,比如GitHub上。我们在终端上使用pod repo可以查看索引库的情况。如图,我们当前只拥有一个索引库,URL对应的是远端的地址,path是本地索引库的地址。我们本地的索引库实际上是通过pod setup命令下载下来的,我们通过pod search搜索私有库都是在本地的索引库进行搜索,所以本地索引库长时间没有更新会造成一些新的框架我们检索不到。使用pod repo update或pod setup更新即可。(点击查看spec的相关介绍

1.下面分别在远端与本地找到相应的索引库。

远端:

本地的索引隐藏起来了,我们终端输入命令显示隐藏文件夹

defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder

2.在腾讯云上建立一个远程私有索引库。

3.这里我们再创建个私有索引库,通过pod repo add <本地索引库的名字> <远程索引库的地址> ,创建本地索引库并和远程索引库做关联,这里其实就是一个clone操作,clone远程到本地(注:本地索引库的名字建议和远程索引库起的名字一样)。我们做关联后本地是没有spec文件的,这个需要后面执行pod repo push后才有。此时我们再打印发现有两个索引库了。

二、本地私有库

我们写好的组件框架放在本地,通过pod的方式找到我们组件 (这里我们是手动创建的demo与spec文件,后面会介绍直接用模版库实现)

修改podfile文件与spec文件,注意相关地址的配置,最后使用pod install即可安装,pod install后实际上是引用本地的类库,最终并没有存在于我们的工程文件夹中。

三、远程私有库

为了多人协作开发我们的私有库最终肯定要放在远程的。远程私有库建立过程就是把本地代码仓库放到远程仓库,我们这里提交的仓库里有我们demo和我们的组件框架,最终通过pod install加载组件框架到我们的实际开发项目中(具体加载过程是通过spec中source_file里的路径来寻找我们的组件的)。

1.远程代码仓库的建立

这里使用的是腾讯云托管的,因为它可以免费建立私有的仓库(以前叫码市)

2.本地代码仓库的建立

1).在终端输入命令:pod lib create <组件名>  创建本地代码组件模版库,组建名可以和远程代码库一致也可以自己随便写。

2).然后在Xcode彻底删除ReplaceMe.m文件,接着把自己封装好的组件化代码的文件夹拖入到组件文件夹的classes路径下。 

3).接着cd到Example下进行pod install (把刚才拖入到classes里的文件夹pod进来,这里会通过podfile里面默认的设置:path => '../',自动把classes里的文件pod过去) 

4).编译组件看是否报错,编译通过后需要修改podspecs索引文件,一般需要修改下面几个问题。

a. 修改版本号

b. 修改项目的简单概述和详细描述

c. 修改homepage和source地址

d. 添加依赖库

5). 编译运行通过后,提交组件到远程代码库并打tag.我们打的tag就相当于提交了一个版本。

git add .
git commit -m “xxx”
git remote add origin 远程代码仓库地址
git push origin master 或者 git push -u origin master(一般第一次提交用)
git tag 版本号/git tag -a 版本号 -m “version 版本号”(注:这里的版本号必须和podspec里写的版本号一致)
git tag 查看版本号是否提交成功
git push - -tags

6).通过pod spec lint 命令验证podspec索引文件(注:pod lib lint是检索本地索引文件,pod spec lint 是本地和远程库同时检索) ,我在验证时很多次失败是因为tag和source_file的问题引起的,所以这两个一定要主要规范。

7).验证通过后,pod repo push <本地索引库> <索引文件名>  提交索引文件到远程索引库。这个操作的实际过程是这样,首先执行命令之前我们的本地是没有那个索引库文件的,push之后会先出现在本地的索引库中,然后通过之前pod repo add关联的远程地址再推到远程索引库中,这里跟pod setup的过程刚好相反。

8). 接下来回到demo工程修改podfile文件,把FMBase组件pod进来(注:需要在Podfile中指定组件远程索引库地址,如果不指定默认会从master的索引库查找就会报找不到组件)

source 'https://git.dev.tencent.com/sacrifice123/FMSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'

然后执行pod install ,项目运行成功即大功告成。

四、远程私有库升级

当我们修改或增加了组件框架以及依赖库,对我们来说就是一次更新升级,此时过程比较简单,我们需修改spec文件的version(版本加1即可)然后和修改的文件一起提交(注意在总文件夹里做提交,不要在Example和本地库文件里提交)。提交成功后我们要打tag,tag和spec的version对应即可,然后继续验证一下,最后执行 pod repo push XXX更新本地与推到远程即可。

另附cocoapods简单总结:https://www.jianshu.com/p/71cb54b02355

                                              http://www.cocoachina.com/ios/20180727/24338.html

猜你喜欢

转载自blog.csdn.net/sacrifice123/article/details/83958405