本文來自 網易雲社區 。 CocoaPods是iOS非常好用的類庫管理工具,可以非常方便的管理和更新項目中使用到的第三方庫,以及將自己項目中的公共組件交由它管理。 一、創建私有podspec 1、創建私有Spec Repc Spec Repo是Pods的一個索引,是一個容器,實際是一個Git倉庫,r ...
本文來自 網易雲社區 。
CocoaPods是iOS非常好用的類庫管理工具,可以非常方便的管理和更新項目中使用到的第三方庫,以及將自己項目中的公共組件交由它管理。
工作中比較常用到的是通過CocoaPods使用第三方庫,那麼,如果將自己的公共組件創建成podspec供其他人使用?踩過各種坑之後,下麵整理瞭如何創建私有的podspec併在項目中部署使用的方法。
一、創建私有podspec
1、創建私有Spec Repc
Spec Repo是Pods的一個索引,是一個容器,實際是一個Git倉庫,remote端在Git上,當使用CocoaPods後它會被clone到本地的~/.cocoapods/repos目錄下。創建一個私有的Spec Repo後可以將自己的Pods添加進來。
先在Git上創建私有的Spec Repo地址,例:https://g.hz.netease.com/hztuyuling/DemoSpecs.git
然後通過命令行創建私有Spec Repo,如下圖
創建成功後進入到~/.cocoapods/repos目錄下就可以看到DemoSpecs這個目錄。
2、創建Pod項目工程文件
-
如果現有的組件還不沒有上傳到Git倉庫,則可以通過CocoaPods提供工具Using Pod Lib Create(詳情查看:http://guides.cocoapods.org/making/using-pod-lib-create) 創建一個pod項目工程倉庫。具體步驟如下:
2.1)cd到要創建項目的目錄執行pod lib create 項目名
如下圖為創建項目的過程。
2.2)向工程文件夾中添加庫文件和資源並配置podspec文件。
2.3)添加好文件,工程無錯後可以將項目推送到遠端倉庫。同樣先創建一個遠端Git項目地址:https://g.hz.netease.com/hztuyuling/NEMonkeyTT.git
然後將項目push到遠端並打上tag,如下圖。
2.4)編輯podspec文件。如下是我這邊用到的欄位並做了註釋,官方文檔有更詳細的介紹,如果有需要用到其他欄位,可以直接查閱:http://guides.cocoapods.org/syntax/podspec.html
2.5)編輯完後需要驗證podspec文件是否可用。驗證需要執行命令 pod lib lint 如下圖驗證通過。
-
如果現有的組件已經在Git倉庫中,則直接創建podspec文件併進行編輯、驗證即可。
創建podspec文件的命令行如下:
pod spec create NEMonkeyTT https://g.hz.netease.com/hztuyuling/NEMonkeyTT.git
3、本地測試podspec文件
此時由於podspec文件還沒有push要遠端,通過指定本地路徑的方式進行測試,在測試項目中podfile文件中,可以通過如下兩種方式來本地引進pod庫。
4、向Spec Repo提交podspec
本地測試podspec文件無誤後,最後一步是將podspec文件提交到私有Spec Repo中。
二、使用私有podspec
私有podspec創建好後,可以在項目中通過pod 庫名的方式直接使用。
以下幾點需要註意:
1、由於是私有的podspec,使用時需要確認已經添加了對應Git倉庫的許可權。
2、同樣由於私有podspec的關係,在項目中pod時會出現找不到對應pod的情況,需要在podfile文件最前面先用source指明依賴庫的地址。
3、如果是老項目中新增pod庫,為了不影響已有的pod庫,在podfile中添加新的pod命令後需要使用pod install進行安裝。
*下麵講一下pod install 與 pod update 的區別
pod install:第一次在工程裡面使用pod的時候使用,每次添加、移除pod的時候使用。pod install在下載、安裝新的庫的同時會把安裝的庫的版本都寫在podfile.lock文件。pod install會下載安裝pods裡面但不在podfile.lock文件里的那些庫之間的依賴。對於podfile.lock里列出的庫,會下載podfile.lock里明確的版本,不會去檢查該庫是否有新的版本。對於還不在Podfile.lock裡面的庫,會找到Podfile裡面描述對應版本(例如:pod "NEMonkeyTT", "~>0.0.1")。
pod update:會更新到這個庫的新版本,而不需要考慮Podfile.lock裡面的限制,它會更新到這個庫儘可能的新版本,只要符合Podfile裡面的版本限制。如果運行pod update,後面沒有跟庫的名字,CocoaPods就會更新每一個Podfile裡面的庫到儘可能的最新版本。
重點:使用pod update PODNAME去只更新某個特定的庫(檢查是否有新版本,並儘可能更新到新的版本)。而當在Podfile裡面添加了一個庫的時候,應該使用pod install,而不是pod update,這樣既安裝了這個庫,也不需要去更新其它的已安裝庫。
三、更新私有podspec
當pod工程有更新後,將工程pod到遠端Git倉庫並打上新的tag。編輯podspec文件,更新s.version為新的tag版本號。本地驗證podspec文件無誤後,將podspec文件push到遠端即可。更新成功後可以在~/.cocoapods/repos/NEMonkeyTT/目錄下看到兩個版本號。
通過pod search NEMonkeyTT查詢也可以搜索到兩個版本號。
至此,私有podspec更新發佈好了,可以在使用時通過指定不同的版本號安裝對應的podspec版本。
本文已由作者塗玉玲授權網易雲社區發佈。