iOS组件化开发之——使用Cocoapods打私有的Pod库

      随着项目和业务的发展,项目中会有很多基础功能模块和通用业务模块可以抽象成独立的组件,这样方便给各个业务线提供共用的基础组件,进行组件化编程,不需要重新造轮子,提高开发效率。因此我们就需要一个方案来合理的管理公共的组件。

Spec Repo(配置仓库)的概念

      CocoaPods对于一名iOS开发来说再熟悉不过了,它的工作原理就是在GitHub上面有个Spec Repo,它里面包括成千上万的后缀名为.podspec的文件。我们在项目中集成第三方库(如SDWebImage)的时候其实就是通过CocoaPods的Spec Repo去找到我们需要的开源项目的.podspec文件,然后在.podspec文件中有具体的源码地址(放具体代码的地方),根据这个地址去下载代码。

      按照上面Spec Repo的理解,我们如果能自己创建一个类似CocoaPods的Spec Repo,然后把我们私有的公共组件的.podspec文件放在里面,然后集成的时候让CocoaPods帮我们集成那我们就能达到目的,就可以建立私有pod库了。

     一般项目经理都会把代码仓库和配置仓库都建好,这时候我们只需要把Spec Repo 加到本地就行了。(注意:需要管理员将你的账号加到里边,有访问权限并且有修改权限)。

一、添加'本地的私有仓库'(Spec Repo)文件 

1、使用下面的命令就可以在本地生成配置文件的仓库,建议这个本地的名字也和远程的一致,这样便于区分和后期的维护.
“baseSpecs”是你们团队远端创建的配置文件仓库的名字,后面是配置文件仓库远端的地址 .
注意此时不需要cd进入任何目录,从默认位置输入这个命令,即在点击终端快捷方式打开的状态下直接输入下面的命令即可

pod repo add baseSpecs http://***/***/specs.git

2、查看是否添加成功(查看本地的所有repo)

pod repo list

或者打开本地配置仓库管理文件夹进行查看

open ~/.cocoapods/repos

如果能看到自己团队的repo(本地的私有仓库),就OK了。注意:这个操作只需要执行一次就可以了,下次再打新的pod库的时候就不需要再执行了。

二、创建自己的pods公共组件库

1、创建项目和.podspec文件

方式1、可以利用pod提供的命令,直接创建一个pod库的标准模板。这个很方便,可以直接创建一个工程,可以省去很多操作。命令如下:
 pod lib create UIPoolSingleImage

方式2、自己在项目根目录创建podspec文件。该方式比较麻烦,需要自己创建项目。

2、编写.podspec文件。根据自己的pod库更改相关内容,文件内容大概是这样的:

//特别说明,里面的注释是博主为了大家知道什么意思加的,实际使用时一定要去掉
Pod::Spec.new do |s|
//文件名
s.name = 'UIPoolSingleImage'
//版本
s.version = '0.1.0'
//描述信息
s.summary = 'A short description of UIPoolSingleImage.'
//这里的主页自己随便写
s.homepage = 'https://github.com/[email protected]/UIPoolSingleImage' 
//作者
s.authors = { '[email protected]' => '[email protected]' }
//资源路径
s.source = { :git => 'http://***/***/uipoolsingleimage.git', :tag => s.version.to_s }
//ARC模式
s.requires_arc = true
//license,一般我们用MIT
s.license = 'MIT'
//允许的最低系统使用版本
s.ios.deployment_target = '8.0'
//库文件路径,这个路径需要和你提供的库文件的目录相对应,否则会报错
s.source_files = 'UIPoolSingleImage/Classes/*'
end

三、创建自己的pods公共组件库

1、在可以创建私有库的地方创建一个code repository(代码仓库), 也就是存放要打的pod库中的代码文件。这里我使用的是gitlab。

 点击右上角的加号按钮,创建代码仓库名为UIPoolSingleImage

       

2.克隆code repository(代码仓库)到本地,并将上面创建好的私有库代码文件上传到code repository(代码仓库)中。注意:代码上传之后时候需要打一个tag ,并且每次更新tag都要和.podspec文件中的tag对应。

四、在命令行验证.podspec文件是否有效

注意:--allow-warnings :表示忽略警告。 --verbose:表示会输出详细的debug信息。

 1、本地校验:pod lib lint UIPoolSingleImage.podspec --allow-warnings
 2、线上校验:pod spec lint UIPoolSingleImage.podspec --allow-warnings

注意:如果你制作的pod库,会依赖spec repository(配置文件仓库)中其他的私有仓库,则需要加上 --use-libraries。并且将spec repository 的源加上。

pod spec lint  UIPoolSingleImage.podspec --sources='http://***/***/specs.git','https://github.com/CocoaPods/Specs.git' --use-libraries

 如果出现passed validating则表示spec文件验证通过了

   

五、将.podspec配置文件push到远端专门存储配置文件的仓库中 

1、将配置文件push到远端专门存储配置文件的仓库中 ,本地的也会同步更新
此时需要cd进入本地的.podspec所在的路径(否则会找不到podspec文件) 
然后使用下面的命令即可,baseSpecs 是你创建的spec repository的名字,后面是你本地创建的.podspec文件

注意:如果你制作的pod库,会依赖spec repository(配置文件仓库)中其他的私有仓库,则需要加上 --use-libraries。

注意:如果你在手动验证 Pod 时使用了 --use-libraries 或 --allow-warnings 等修饰符,那么发布的时候也应该使用相同的字段修饰,否则可能会报错。

pod repo push baseSpecs UIPoolSingleImage.podspec --allow-warnings --use-libraries --verbose

2、出现下面信息,则代表成功

  

  

或者查询本地私有spec管理文件夹,如果看到了UIPoolSingleImage则代表成功

   open ~/.cocoapods/repos

    

  3、可以在远端配置文件仓库中看到这个文件,如下:

  

到此,利用Cocoapods打私有的pod库就完成了。接下来,在项目中就可以直接引入私有库了。 

注意:引用私有库的时候,需要将Spec Repo源加到Profile文件中,如下:

source "https://github.com/CocoaPods/Specs.git" #cocoapods的
source "http://***/***/specs.git" #私有的

pod 'UIPoolSingleImage', '0.1.0'

更新:下次更新pod库的时候,在sourceTree需要打tag,比如从0.1.0升级到0.2.0,要先将代码推送到远端,然后再打tag,顺序不能反。而且打的tag要和.podspec文件中的tag要对应。

参考:

gitLab创建自己的私有库 

iOS 建立自己本地cocoapod库

在Github上创建自己的公有的Pod库(开源库,提供Pod导入)

[Cocoapods]项目添加Cocoapods支持遇到的坑

Cocoapods使用私有库中遇到的坑

发布了89 篇原创文章 · 获赞 92 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/u013602835/article/details/83000645