CocoaPods提交初體驗

距離將GCTagList提交到CocoaPods,大概有一個禮拜了, 也送了兩個版本到上面去; 今天記錄一下提交的一些內容~

CocoaPods

CocoaPods是一個管理Objective-C專案的thrid library的工具; 在專案內更新lib不用在使用手動的方式來更新使用的libs, 也可以指定使用lib的版本; 現在已經進步到更新Podfile XCode不用在重新開啟workspace了~

建立一個Spec for CocoaPods

依照CocoaPods上的解說, 有幾個步驟:

  • 你必須要建立一個的Spec檔案{lib_name}.podspec
  • 編輯spec檔案
  • 檢查spec檔案是否正確
  • spec無誤後, 在 CocoaPods/Specs 加入spec檔案, 送出Pull Request的申請

如果沒問題的話, 收到merge的通知就表示你可以在cocoapods上查找你的lib啦, 那麼我們快速的看一下如何製作一個Spec for CocoaPods。

先使用Command line來建立Spec檔案(推薦iTerm2)

建立podspec
1
$ pod spec create GCTagList

建立之後, 在資料夾中會出現一個GCTagList.podspec

接著編輯spec (依照習慣, 我個人習慣sublime text 2)

編輯Spec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Pod::Spec.new do |s|
  s.name         = "GCTagList"
  s.version      = "0.1.1"
  s.summary      = "GCTagList like iOS Mail app's sender or recivers tags."
  s.screenshots  = "https://github.com/greenchiu/GCTagList/raw/master/Screenshot.png"
  s.homepage     = "https://github.com/greenchiu/GCTagList"
  s.license      = { :type => 'MIT License', :file => 'LICENSE' }
  s.author       = { "greenchiu" => "handkid1986@gmail.com" }
  s.source       = { :git => "https://github.com/greenchiu/GCTagList.git", :tag => "0.1.1" }
  s.platform     = :ios, '5.0'
  s.source_files = 'GCTagList/classes/GCTagList.{h,m}'
  s.resource     = "GCTagList/assets/CGTagLabelList.bundle"
  s.framework    = 'QuartzCore'
end
  • name
  • version
  • summary
  • homepage
  • license
  • author
  • source

以上幾個部分是Spec裡面不能少的, 其他的可以依照你的需求來增加內容 ,更多的詳細資訊在這邊The-podspec-format

GCTagList只支援iOS5~6, 在plaform設定成 ios, '5.0'; 另外因為有assets所以在resource要指定assets的路徑, 路徑是依照專案的相對位置(不確定是不是github上的); framework同理, 如果有多個的話使用frameworks然後使用的framework用”,”隔開'SystemConfiguration', 'CoreServices'

在完成spec檔案後, 在使用指令來檢查spec是否有錯誤

檢查你的Spec
1
$ pod spec lint GCTagList.podspec

如果沒有錯誤會出現下面的內容

接下來,

  • CocoaPods/Specs fork一份新的Specs下來,並複製在本機端。(建議在提交前在fork, 避免覆蓋到其他人的內容)
  • 在Spec建立Library的資料夾, 並將資料夾命名為Library的名稱。
  • 依照提交的版本建立不同的資料夾, 資料夾命名為版本名稱, 在將Spec檔案放入。

完成後的大該像下面這樣

在將修改玩的specs commot&pusd到自己的github上, 然後在website點擊pull request來送出請求, 到這邊只要等待通知啦, 基本上spec有檢查的話應該就會直接通過了。

最後

在確定收到merge完成的通之後, 你可以在commond line更新本機端的spec檔案, 應該就可以搜尋到你的檔案啦~

如果你在使用的library在CocoaPods上找不到的話, 也是可以主動幫他建立一個spec檔, 主動提交上去如果過了就可以使用CocoaPods來管理囉。

Comments