转载

使用 CocoaPods 进行团队协作

让程序流畅稳健的运行是开发者们的理想,这个理想时而遥远,时而近在咫尺。而往往那个触手可及的时刻,却正是梦碎的边缘。

在团队协作中,修改别人的代码是一件像扫雷游戏一样的事情,你永远不知道你做的到底是 “优化” 还是 “触雷”。

使用 Cocoapods 将不同的功能进行切割,独立成模块再整合进 App,成为了一个行之有效的方法,本文就来一起研究一下如何使用 CocoaPods 来进行组件模块化。

创建自己的 Pod

以 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 的仓库。

公开发布 Pod

首先需要注册一下你自己的身份,例如你想注册的邮箱是 orta@cocoapods.org,名字是 Orta Therox,那么可以用下面的命令

pod trunk register orta@cocoapods.org 'Orta Therox'   

注册完成后,就可以把上面验证通过的 Pod 发布上去

pod trunk push RichTextView.podspec   

本地测试 Pod

团队协作的项目通常并不需要暴露到外部,那么我们只需要跳过 pod trunk push 的步骤,并在 Podfile 声明一下 path 地址即可

pod 'RichTextView', :path => '../CatchLib-iOS/RichTextView/'   

Enjoy!

正文到此结束
Loading...