天天看點

代碼管理| 建立自己的私有Cocopods庫

代碼管理| 建立自己的私有Cocopods庫

前言

iOS元件化的實作基本基于cocoapods,如何使用cocoapods建立自己的元件庫,是實作元件化的第一要素,下面就建立自己的私有Cocopods庫展開實戰記錄。

本文中引用了很多原文的gif動态圖,是因為原作者總結的很好了,但是有些地方我做了補充以及解決了一個很大的使用中的問題,原文連結在本文的文章末尾。

一、建立私有庫的索引庫

代碼管理| 建立自己的私有Cocopods庫

建立索引庫檔案.gif

建立私有庫的索引庫,這句話有些繞口,我們分開來看:

1、索引庫:存放spec檔案的地方,用于索引到代碼的位置。

2、私有庫:指的是我們真正放置元件代碼的地方。

打個比方,索引庫就好比指針,私有庫就好比對象,指針中存放了對象的位址,通過位址可以找到對象!

我們在建立的這個空的倉庫,是用來存放我們自己所有的私有庫的  spec  檔案,
就如同官方的 https://github.com/CocoaPods/Specs  是用來存放所有官方的  specs  檔案一樣。           

複制

二、将建立的索引庫添加到本地cocoapods倉庫

代碼管理| 建立自己的私有Cocopods庫

添加遠端索引庫到本地cocoapods.gif

  • 1.cocoapods本地倉庫路徑

    $ ~/.cocoapods/repos

  • 2.在本地添加一個自己的遠端索引庫

    $ pod repo add QinzRepo https://gitee.com/Qinz_323/QinzRepo.git 這個時候需要輸入碼雲賬号、密碼

上面就是簡單的将我們自己建立的索引庫放置在cocoapods管理的倉庫下,預設情況下是隻有一個master倉庫,我們常用的SDWebImage,AFNetWoking等的本地索引就在這個倉庫中。現在是通過碼雲來建立自己的倉庫,是以要建立一個自己的索引倉庫,該倉庫下也隻是存放各元件的索引檔案,不存放代碼!

三、建立模闆

代碼管理| 建立自己的私有Cocopods庫

建立模闆.gif

  • 建立模闆的指令

    $ pod lib create QinzTool 這時會需要回答幾個問題,如下圖這樣回答即可:

代碼管理| 建立自己的私有Cocopods庫

通過該指令會自動建立一個模闆工程,裡面包含我們需要的索引檔案,格式為spec,建立完成後,系統會自動打開我們的這個工程。

代碼管理| 建立自己的私有Cocopods庫

接下來通過該模闆檔案來制作我們自己的元件。

四、将我們自己的元件放入指定目錄

代碼管理| 建立自己的私有Cocopods庫

将元件放入指定檔案.gif

模闆檔案中會看到一個Development pods的檔案夾,這個檔案夾代表的是本地的元件庫,這裡我們把Tool檔案(也就是我們自己制作的元件)放在指定的檔案夾,然後引入到工程中。

代碼管理| 建立自己的私有Cocopods庫

(我建立的時候,并沒有看到Development 這層檔案夾,可以直接把檔案拖到 pods/JWJFramework中即可。)

至此,我們的本地第三方元件已經制作完成,現在就可以通過在終端執行pod install 後看看效果了!當然,我們肯定不會局限于本地,接下來就是如何制作線上元件庫了!

五、将制作好的元件上傳至碼雲

代碼管理| 建立自己的私有Cocopods庫

上傳元件至碼雲.gif

這裡你會發現,我又重新建立了一個項目,和我之前建立的索引庫項目是不一樣的,這個就是真正放置我們封裝的代碼的地方。這裡我們選擇導入已有工程,點選建立後會生成一些指令提示,我們找到最下面的三條指令,将本地的模闆上傳至該倉庫!見下圖:

代碼管理| 建立自己的私有Cocopods庫

上傳至碼雲.gif

  • 1.執行下面三條指令,上傳模闆檔案

    $ cd /Users/Qinz/Desktop/QinzTool/QinzTool $ git remote add origin https://gitee.com/Qinz_323/Tool.git $ git push -u origin master

  • 2.将元件的代碼上傳,上一步隻上傳了模闆檔案

    $ git add . $ git commit -m ``'初始化'` $ git push -u origin master`

-m '初始化'是送出的備注資訊,可以自己根據需要填寫,同時可以去網站上時時檢視倉庫的變化!見下圖:

代碼管理| 建立自己的私有Cocopods庫

上傳代碼.gif

六、更改模闆檔案相關資訊

代碼管理| 建立自己的私有Cocopods庫

填寫模闆檔案.gif

代碼管理| 建立自己的私有Cocopods庫

我們打開Xcode工程,找到.podspec字尾的檔案,

更改s.summary,這個是顯示在pod search的簡短描述:“進無盡的第一個私有庫”;

s.version是版本号,第一次預設是0.1.0不用修改,

下面再主要修改兩個參數

s.homepage 為我們的賬号首頁位址:https://gitee.com/fangmei

s.source中的位址為我們建立元件倉庫的位址:https://gitee.com/fangmei/Tool.git

即可!

七、驗證spec檔案

代碼管理| 建立自己的私有Cocopods庫

驗證spec檔案.gif

$ pod lib lint  --private           

複制

這裡是對我們的spec檔案進行驗證,就是是否符合要求!如果這裡報錯,說明你配置spec檔案是有問題的!

代碼管理| 建立自己的私有Cocopods庫

八、給版本打一個分支

代碼管理| 建立自己的私有Cocopods庫

建立版本分支.gif

此處的 0.1.0 版本号要與 spec 檔案的保持一緻

$ git tag    0.1.0
  $ git push  --tags           

複制

打分支這一步很重要,直接決定下面的步驟是否能夠繼續,當我們有版本更新的時候就要更改版本号,這裡預設是0.1.0,一定要與之前我們在Xcode中看到的s.version号一緻!

九、建立關聯

代碼管理| 建立自己的私有Cocopods庫

建立關聯.gif

$ pod repo push QinzRepo QinzTool.podspec
 這裡QinzRepo 是第二步裡面的;
 QinzTool.podspec 是第六步裡面的;           

複制

通過這一步我們就同步好了遠端和本地索引庫,到此,私有庫已經制作完畢!

十、使用自己的私有庫

代碼管理| 建立自己的私有Cocopods庫

使用.gif

當我們要使用自己建立的私有庫時,要引用我們之前第一步建立的索引倉庫位址,也就是指針倉庫位址,見上圖!

其實這裡的使用不像一般第三方庫那樣,需要加上兩個source 才行,否則會報錯。

詳情爬坑過程見這篇文章:Cocopods| 中使用自己的私有倉庫時的一次報錯記錄

參考文章 http://www.cocoachina.com/ios/20180511/23359.html