cocoapod 組件化之私有庫(kù)托管

項(xiàng)目組件化已成標(biāo)配,優(yōu)點(diǎn)不再詳談,實(shí)現(xiàn)項(xiàng)目模塊組件化的需要兩步

  1. 項(xiàng)目業(yè)務(wù)模塊邏輯解耦,并寫中間件進(jìn)行模塊間,模塊與項(xiàng)目間的通信。
  2. 解耦業(yè)務(wù)模塊使用cocoapods私有庫(kù)托管,實(shí)現(xiàn)項(xiàng)目代碼物理隔離。

本章記錄一下第二步,cocoapod私有庫(kù)的使用流程。
應(yīng)該先了解cocoapod 官方庫(kù)的托管邏輯,再去建私有庫(kù),比較明白。
即cocoapod私有庫(kù)使用 也大致分為兩步,
第一步,建立模塊代碼倉(cāng)庫(kù)。
第二步,建立pod私有索引庫(kù),并將第一步生成的索引.podspec文件push到私有索引庫(kù)中。

一、建立項(xiàng)目模塊代碼倉(cāng)庫(kù)。

公司的項(xiàng)目,模塊代碼庫(kù)肯定要建立公司內(nèi)網(wǎng)站點(diǎn)里。私人的東西可以建立在github上,公開(kāi)的。

1.命令建立項(xiàng)目模塊私有庫(kù)模板。

pod lib create XXX

2.然后將項(xiàng)目模塊添加到Development Pods 文件目錄下。
3.修改工程下的.podspec文件,這一步是最易出錯(cuò)的,ruby語(yǔ)法書(shū)寫,詳細(xì)格式及命令詳見(jiàn)官方指導(dǎo)http://guides.cocoapods.org/syntax/podspec.html
4.本地驗(yàn)證,看是否項(xiàng)目模塊編譯無(wú)誤。

    pod lib lint

如果出錯(cuò),修改完,若是動(dòng)了工程文件,則需要執(zhí)行

pod update

然后再次本地驗(yàn)證pod lib lint
5.將本地驗(yàn)證無(wú)誤的模塊代碼推送到公司站點(diǎn)已建立好的倉(cāng)庫(kù)(pod lib create 創(chuàng)建的已經(jīng)包含git信息)
6.該項(xiàng)目模塊發(fā)布一個(gè)版本,需要與.podspec文件中發(fā)布版本一致
7.驗(yàn)證遠(yuǎn)程庫(kù)

    pod spec lint

驗(yàn)證無(wú)誤后,項(xiàng)目模塊私有庫(kù)創(chuàng)建就完成了。

  • 第三步坑比較多,很多配置問(wèn)題,比如子庫(kù),對(duì)其他私有和公有庫(kù)的引用,編譯時(shí)是否使用到了靜態(tài)庫(kù),warning警告如何忽略等
    暫時(shí)列出 需要注意的幾個(gè)點(diǎn)
    --use-libraries 編譯時(shí)需要靜態(tài)庫(kù),
    --allow-warnings 忽略警告
    具體詳見(jiàn)CocoaPods官方指導(dǎo)

二、建立pod私有索引庫(kù),并將第一步生成的索引.podspec文件push到索引庫(kù)中。

  • 接下來(lái)建立類似cocoapods官方庫(kù)的私有庫(kù)。我的命名為FZXSepec
# pod repo add [Private Repo Name]  [git HTTPS clone URL]
 pod repo add FZXSepec http://192.168.73.xxx:2200/xxxx/FZXSepec.git
  • 向spec倉(cāng)庫(kù)中添加我們第一步已經(jīng)創(chuàng)建好的項(xiàng)目模塊.podspec配置文件
    cd到.podspec文件所在目錄
# pod repo push [Private Repo Name] [Private podspec Path]
 pod repo push FZXSepec ./MyLibary.podspec

推送成功我們可以到FZXSepec目錄下查看

 cd ~/.cocoapods

三、私有庫(kù)的使用

Podfile 文件中默認(rèn)情況下已經(jīng)隱式使用 source聲明了 CocoaPods 的官方倉(cāng)庫(kù)。但使用私有組件,需要使用 source關(guān)鍵字鮮顯式聲明組件所在倉(cāng)庫(kù),如下:


podfile文件.jpg

當(dāng)然我們也可以省略掉第2步,如果不想創(chuàng)建私有倉(cāng)庫(kù),也可以在 Podfile 里直接引用私有組件(組件可以是本地的,也可以是托管在自家公司服務(wù)器或網(wǎng)上的代碼托管平臺(tái)上的),引用的同時(shí)還可以制定具體的 commit、branch 或者 tag,比如:

# pod 'FGMarqueeView', :git => 'https://git.coding.net/foogry/FGMarqueeView.git', :commit => 'b4dc0ffee'
  • 部分命令
    pod lib lint --use-libraries --allow-warnings
    pod spec lint --use-libraries --allow-warnings
    pod repo push FZXSpecs FZXParse.podspec --use-libraries --allow-warnings
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容