iOS 組件化之抽取私有Pod庫

引言

最近對組件化相關(guān)的知識比較感興趣,翻看了好多大神的博客,算是對組件化有個大概的了解了。所謂的組件化,一方面是抽取私有Pod庫,其實就是把我們的項目分成多個模塊,例如基類模塊、工具類模塊、登陸模塊、首頁模塊等等,然后把他們抽取成一個個私有Pod庫,像平時利用cocopods導(dǎo)入三方庫那樣導(dǎo)入我們的這些私有庫;另一個方面就是關(guān)于模塊之間的通信問題,常常采用路由跳轉(zhuǎn)。本文的主要目的是前者。

一. 公有Pod庫的本質(zhì)

公有Pod庫大家應(yīng)該都比較熟悉,項目中經(jīng)常使用的三方庫,如AFNetworking,Masonry,SDWebImage等都屬于公有Pod庫,任何一個開發(fā)者都可以把其導(dǎo)入自己的項目工程中進(jìn)行使用。與之相對應(yīng)的就是私有Pod庫,它只能被有權(quán)限的人使用。其實公有和私有的區(qū)別不大,就是誰來管理.podspecs文件的問題,下面就說一下大家比較熟悉的公有Pod庫的本質(zhì)

  • 遠(yuǎn)程索引庫:存在一個公共的遠(yuǎn)程索引庫,包含所有三方框架的.podspec文件,在.podspecs文件中包括了框架名,框架源碼地址,用戶名,描述等信息。
  • 本地索引庫:在安裝pod,執(zhí)行pod setup的時候,會將公共的遠(yuǎn)程索引庫copy一份到本地,也即是公共的本地索引庫。(可以查看此目錄:/Users/xx/.cocoapods/repos, xx替換成你的電腦名,下同)
  • 檢索文件: 公共的本地索引庫會另外生成一個檢索文件,以鍵值對的形式,方便以后查找。( 可以查看此目錄:/Users/xx/Library/Caches/CocoaPods)
  • 導(dǎo)入三方庫:執(zhí)行pod install的時候,先去檢索文件中查找,找到之后,在公共的本地索引庫拿到框架源碼地址進(jìn)行導(dǎo)入。

二. 創(chuàng)建私有Pod庫

上面已經(jīng)提到了,公有Pod庫是任何一個開發(fā)者都可以導(dǎo)入使用的,并且是能看到源碼的,這顯然不是我們想要的。我們的pod庫應(yīng)該是只能內(nèi)部人員才能導(dǎo)入使用,所以我們應(yīng)該把一個個模塊抽取成私有的Pod庫。
公有和私有Pod庫的主要區(qū)別就是遠(yuǎn)程索引庫不同,我們需要創(chuàng)建一個私有的遠(yuǎn)程索引庫,用來管理私有庫的.podspec文件,其他方面大同小異。
下面以Base模塊為例,將其抽取成私有Pod庫。說明一下:原項目名為ModuleDemo,位于桌面上。

1.創(chuàng)建私有的遠(yuǎn)程索引庫

(1) 在coding.net上創(chuàng)建一個私有的倉庫FERSpecs,克隆地址是:https://git.coding.net/jokin11/FERSpecs.git,F(xiàn)ERSpecs就作為上面提到的私有的遠(yuǎn)程索引庫。

(2) 終端執(zhí)行下面命令,將私有的遠(yuǎn)程索引庫copy到本地。

pod repo add FERSpecs https://git.coding.net/jokin11/FERSpecs.git

執(zhí)行完畢后,在目錄:/Users/xx/.cocoapods/repos 下會多出來一個FERSpecs文件夾,至此私有的索引庫部分就完成了。

2.創(chuàng)建私有Pod組件庫

(1) 打開終端,進(jìn)入到桌面目錄下,執(zhí)行下面命令來創(chuàng)建一個名為FERBase的Pod庫空模板。

pod lib create FERBase

依次輸入下圖信息進(jìn)行基礎(chǔ)配置:


image.png

配置完畢之后,Pod庫空模板就創(chuàng)建成功了,系統(tǒng)會自動此模板。

(2) 在coding.net上創(chuàng)建遠(yuǎn)程倉庫FERBase,克隆地址是:https://git.coding.net/jokin11/FERBase.git,在終端FERBase目錄下執(zhí)行下面命令,關(guān)聯(lián)本地倉庫到遠(yuǎn)程倉庫。

git remote add origin https://git.coding.net/jokin11/FERBase.git

(3) 將原項目MoudleDemo中需要封裝的Base模塊,復(fù)制到 FERBase/FERBase/Classes中,同時將Base文件夾拖入項目的下圖位置,順便刪除ReplaceMe文件,

image.png
上面搞定之后,接著就是修改FERBase.podspec文件,如下圖
image.png
修改完成之后,將本地代碼推送到遠(yuǎn)程倉庫,設(shè)置tag并推送到遠(yuǎn)端(注意:tag要和上圖中s.version版本一樣),然后終端執(zhí)行下面命令,來校驗我們的 FERBase.podspec 文件

pod spec lint

等待片刻,終端出現(xiàn) FERBase.podspec passed validation,則說明 FERBase.podspec 文件通過校驗。

3.將FERBase.podspec文件加入私有的遠(yuǎn)程索引庫

上面已經(jīng)驗證過 FERBase.podspec 文件沒問題,接著就是要把 FERBase.podspec 文件添加到私有的索引庫(也就是第一步中得到的索引庫 FERSpecs),在終端執(zhí)行下面命令:

pod repo push FERSpecs FERBase.podspec

上面命令對 FERBase.podspec 文件做了兩個操作:一個是將其推送到私有的遠(yuǎn)程索引庫,可以去 coding.net 的 FERSpecs倉庫中查看;另一個是將其copy到私有的本地索引庫,這個可以去目錄:/Users/xx/.cocoapods/repos/FERSpecs 下查看到。
至此,Base模塊抽取成私有的Pod庫也就完成了,可以在終端執(zhí)行pod search FERBase來查詢它,接下來就是在原項目中使用它了。

4.使用私有Pod庫

在原項目的Podfile中,導(dǎo)入私有的Pod庫的方式如下圖

image.png
接著執(zhí)行pod install命令進(jìn)行安裝,安裝完畢之后,可以看到Pods文件夾中已經(jīng)有FERBase了,然后把原項目中的Base文件夾給刪除掉即可。
另外,公司內(nèi)部其他成員在使用之前需要執(zhí)行下面命令,將私有的遠(yuǎn)程索引庫copy到本地,然后就可以正常使用了。

pod repo add FERSpecs https://git.coding.net/jokin11/FERSpecs.git

總結(jié)

在整個過程中,需要到git服務(wù)器上創(chuàng)建兩個倉庫,一個作為索引庫,一個作為pod組件庫;接著就是創(chuàng)建模板并配置.podspec文件;然后就是讓索引庫管理.podspec文件,之后就是使用了,如果清楚了這幾步,對于抽取私有Pod庫應(yīng)該很得心應(yīng)手。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容