随着项目不断持续、功能模块增加,工程中的代码也是越来越多。这就带来一个问题,如何能做到“高内聚低耦合”,快速迭代,团队成员高效的配合呢。组件化可以帮助我们解决这些问题。
在具体将工程抽离之前,我们先来介绍一下,如何制作自己的
CocoaPods
开源库。 PS:如果中间步骤卡住了,请看本文最后,可能会帮助到你哟~~
具体步骤如下:
- 创建一个 GitHub 仓库;
- 将要开源的代码放到该仓库中;
- 创建一个
pods
的配置文件NAME.podSpec
; - 具体修改配置文件
NAME.podSpec
中的相关信息; - 将配置文件发布到
CocoaPods
官方索引库中; - 如何维护和升级;
可能有些朋友有疑问了,NAME.podSpec
是个什么玩意,CocoaPods
官方索引库又是怎么回事呢?我简单的用一张图来说明一下吧。
如图所示,我们想要制作自己的 CocoaPods
库,首先要为自己的源代码生成一个后缀名为 podSpec
的文件。它是这个库的配置文件,在这个文件中,我们需要配置框架名、仓库地址、版本号、依赖库等等。我们将这个配置文件上传到远程索引库之后,当其他开发人员更新了他们的本地索引库,就可以搜索到并且使用我们的库了。
接下来就仔细的说说,如何制作一个 CocoaPods
库。不过关于创建一个工程并上传到GitHub仓库,就不在这里赘述了。
- 使用命令创建一个
.podSpec
文件,名字与项目名相同即可。-
pod spec create LTCategory
-
这个配置文件用Xcode
打开就可以,下面我们就来看看打开是什么样字吧。
前面 # 号不用我说了吧,注释部分的英文好的同学可以看看,我这里全部删掉啦。
# 库名称,podfile里引入的就是这个名字。
s.name = "LTCategory"
# 版本号,与仓库中的tag相对应。
s.version = "0.0.4"
# 简介
s.summary = "LTCategory is a toolkit."
# 详细描述
s.description = "LTCategory is a toolkit for developer."
# 框架主页,一般填GitHub地址
s.homepage = "https://github.com/menglingtong/LTCategory"
# 开源协议,我个人一般选择MIT
s.license = "MIT"
# 作者信息
s.author = { "Jason" => "ak-7755@qq.com" }
# 最低可使用的系统版本
s.platform = :ios, "7.0"
# 源码地址,最好使用HTTPS,版本号直接使用上面的s.version
s.source = { :git => "https://github.com/menglingtong/LTCategory.git", :tag => s.version }
# 代码源文件地址,其实就是填一个与当前 spec 文件的相对路径
s.source_files = "LTCategoryFolder/*"
# 需要使用的framework
s.frameworks = "Foundation", "UIKit"
# 该项目所依赖的其他库,如果有多个需要填写多个
# s.dependency 'AFNetworking', '~> 2.3'
# 是否支持ARC
s.requires_arc = true
- ok,基本信息配置好了,校验一下格式吧。
- 第一种忽略警告: pod lib lint --allow-warnings
- 第二种不忽略警告: pod lib lint
如果使用第二种命令,会有警告报出,但是其实不影响使用,所以我将所有警告全部忽略掉了。
在正式发布到远程索引库中之前,还有一个我们需要注意的地方,那就是需要用git 添加一个 tag 与配置文件中的 s.version相同,这一点很重要,升级维护的时候也需要注意。
-
用git添加一个tag来和.podspec中的 s.version = "0.0.1"相对应
- git tag "0.0.1"
- git push --tags
-
在pod 上注册一下
- pod trunk register ak-7755@qq.com 'jason' --description='my description' --verbose
注册的时候,需要将邮箱和名字换上你自己的,然后会受到一封邮件,验证一下就可以继续下一步了。
-
pod trunk push LTCategory.podspec --allow-warnings
成功之后会看到下面的图片。
让我们查一下吧, pod search LTCategory 。
升级和维护部分就相对简单了,每次更新之后,调整 s.version 和对应的 tag,重新发布一下.podSpec文件就ok了。
按理说,这篇博客到这里就应该结束了。不过,我如果没猜错的话,你肯定没有很顺利的完成上述步骤吧~~
以下几篇文章可能会有你想要的答案