Cocoapods 私有库

CocoaPods 是管理Objective-Cswift 工程依赖的的工具,可以很方便的管理项目依赖。

CocoaPods 的安装方法参考之前的文章

之前一段时间一直在对项目组件化,在这个过程中经常需要将业务模块独立成单独pod来实现业务业务解耦,总结一下建立私有库的方法

之前的一篇文章简单介绍了私有库的一些基本操作,先总结一下:

1、准备自己的git私有库,添加到本地./cocoapods/repos/
2、编写podspec文件

其实除了pod spec create的方法之外cocoapods还提供了一种快捷的方法pod lib create

创建成功之后文件路径

可以看出来所需要的文件都已经自动生成了,我们主要看一下.podspec文件,比较重要的配置,详细配置戳这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*核心代码路径*/
s.source_files = 'Test/Classes/**/*'
/*图片、xib、plist等资源文件*/
# s.resource_bundles = {
# 'Test' => ['Test/Assets/*.png']
# }
/*依赖的系统frameworks*/
# s.frameworks = 'UIKit', 'MapKit'
/*依赖的三方framework*/
# s.vendored_libraries = ''
/*系统的静态库*/
# s.libraries = 'z'
/*依赖的三方库*/
# s.dependency 'AFNetworking', '~> 2.3'

其中 resource_bundles 也可以用resources
参考文章

s.libraries = 'z' 其实就是系统的libz,只是省略lib前缀

其他详细的配置参考上面的官方文档

配置好之后,我们可以去Example文件夹目录下pod update,然后就可以看到我们配置的依赖

这里简单介绍一下podfile文件

podfile文件使用ruby编写的,当我们执行pod update的时候,会根据库名去我们的cocoapods repo下面寻找对应的库,然后根据后面的版本号(没指定默认最新)找到对应的podspec文件,然后去拉对应的代码,我们的cocoapods repo文件路径~/.cocoapods/repos/

其中我们看到的 pod '库名', :path => '../'代表指定路径,从当前文件的上级文件中找到podspec

我们还可以使用pod '库名', :git =>'git 地址', :branch =>'分支名'指定对应git地址的对应分支

最后我们开发完成,将代码提交打上tag,编辑podspec

1
2
s.version = '0.1.0'`
s.source = { :git => 'https://github.com/huanghehg/Test.git', :tag => s.version.to_s }

通常我们保证tagversion一致,以便于维护

最后便是验证、上传了

pod lib lint验证是否符合规范,我们可以忽略警告--allow-warnings ,后面跟上--sources=git私有库地址,如果有error就需要解决完之后才可以
通过之后就是上传了pod repo push 私有库名字 podspec文件名

其实最后的验证上传不是一定验证通过,我们组件化过程中前期各个pod会有各种依赖,一个验证不通过会导致其他都无法通过,我们可以直接在 ~/.cocoapods/repos/私有repo下面创建对应私有库文件夹,然后创建version文件夹,再把对应的podspec移动到version文件夹下,提交推送也是OK的(不过不建议这么做