让程序流畅稳健的运行是开发者们的理想,这个理想时而遥远,时而近在咫尺。而往往那个触手可及的时刻,却正是梦碎的边缘。
在团队协作中,修改别人的代码是一件像扫雷游戏一样的事情,你永远不知道你做的到底是 “优化” 还是 “触雷”。
使用 Cocoapods 将不同的功能进行切割,独立成模块再整合进 App,成为了一个行之有效的方法,本文就来一起研究一下如何使用 CocoaPods 来进行组件模块化。
以 RichTextView 为例,完成类库的功能后的第一件事就是创建 RichTextView 的 podspec
描述文件
进入项目的根目录
pod spec create RichTextView
这个描述文件其实是一段 Ruby 代码,描述了和这个库相关的内容,最重要的是描述了库的授权协议,如何获取库的代码,版本号,以及编译方式
Pod::Spec.new do |s| s.name = "RichTextView" s.version = "0.3.1" s.summary = "RichTextView based On TextKit" s.description = <<-DESC RichTextView based On TextKit, With Mention, Hashtag Feature DESC s.homepage = "https://github.com/kevinzhow/RichTextView" s.screenshots = "https://raw.githubusercontent.com/onevcat/Kingfisher/master/images/logo.png" s.license = { :type => "MIT", :file => "LICENSE" } s.authors = { "kevinzhow" => "kevinchou.c@gmail.com" } s.social_media_url = "http://twitter.com/kevinzhow" s.ios.deployment_target = "8.0" # s.osx.deployment_target = "10.7" s.source = { :git => "https://github.com/kevinzhow/RichTextView.git", :tag => s.version } s.source_files = "RichTextView/Source/*.swift" s.requires_arc = true end
值得需要特别注意的是 s.version
正是 s.source
里想要从 git 取出来的 tag 版本。
s.version = "0.3.1"
s.source = { :git => "https://github.com/kevinzhow/RichTextView.git", :tag => s.version }
s.source_files
相对应的就是你的库是在 git 的哪个文件夹里,的哪些文件
s.source_files = "RichTextView/Source/*.swift"
如果是 Swift 项目,需要注意给你的类和需要暴露的方法加上 public 字段
当以上都编辑妥当之后,需要先验证一下这个文件有没有错误
pod spec lint RichTextView.podspec
验证无误后,如果愿意开源的话,就可以推入 Pod 的仓库。
首先需要注册一下你自己的身份,例如你想注册的邮箱是 orta@cocoapods.org,名字是 Orta Therox,那么可以用下面的命令
pod trunk register orta@cocoapods.org 'Orta Therox'
注册完成后,就可以把上面验证通过的 Pod 发布上去
pod trunk push RichTextView.podspec
团队协作的项目通常并不需要暴露到外部,那么我们只需要跳过 pod trunk push
的步骤,并在 Podfile 声明一下 path 地址即可
pod 'RichTextView', :path => '../CatchLib-iOS/RichTextView/'
Enjoy!