配置前提:mac電腦/有安裝cocopods/有GitLab賬號(hào)并且最好有在GitLab上面配置ssh
咱們很多時(shí)候私有庫(kù)都是和組件化一起配合使用(一個(gè)庫(kù)可能就是一整個(gè)組件)备籽,組件化的內(nèi)容可以看看這里传黄。
我們主要講講私有倉(cāng)庫(kù)的建立沃琅,以及內(nèi)部私有依賴代碼庫(kù)的使用荚藻。
首先要明白兩個(gè)概念:
1.code repository是代碼庫(kù)。
2.spec repository是配置倉(cāng)庫(kù)哑子,所有的配置按照包名舅列、版本號(hào)分門別類的存放在這個(gè)倉(cāng)庫(kù)。這個(gè)倉(cāng)庫(kù)只用來存放podspec文件卧蜓,不存放代碼帐要。
第一步:現(xiàn)在GitLab上面創(chuàng)建一個(gè)私有依賴代碼庫(kù)
?1.創(chuàng)建一個(gè)私有的project
2.通過這里的教程創(chuàng)建一個(gè)名為PayListProject的本地私有依賴代碼庫(kù)
將PayListProject這個(gè)文件夾復(fù)制出去(隨便放個(gè)地方)以防出現(xiàn)誤導(dǎo),然后原來地方的PayListProject可以刪除了弥奸。
好了榨惠,言歸正傳,打開復(fù)制出來的PayListProject盛霎,里面有個(gè)PayListProject.podspec文件將其打開赠橙。
3. 驗(yàn)證podspec的有效性,打開終端 cd 到PayListProject的目錄中
接著運(yùn)行pod lib lint?
如果有警告愤炸,會(huì)導(dǎo)致無法通過期揪,需要添加--allow-warnings
如果使用了c函數(shù)相關(guān)的,需要添加--use-libraries
比如:pod lib lint --allow-warnings
驗(yàn)證通過后规个,把代碼提交到倉(cāng)庫(kù)即可
git add -A && git commit -m "add pod files"
git remote add origin https://gitlab.com/xxxxxx/PayListProject.git????? //連接遠(yuǎn)程github項(xiàng)目??
git tag '0.1.0'? //這里的版本號(hào)注意要和podspec文件中的版本號(hào)統(tǒng)一
git push --tags??????? //將本地tag更新到github項(xiàng)目上去
git push origin master??? //將本地項(xiàng)目更新到github項(xiàng)目上去
第二步:現(xiàn)在GitLab上面創(chuàng)建一個(gè)私有倉(cāng)庫(kù)凤薛,用來存放私有依賴代碼庫(kù)的配置
步驟和第一步中的第一小步一樣,其名字命名為MySpecs诞仓,當(dāng)然也可以是別的名字缤苫,這個(gè)隨便!
這個(gè)倉(cāng)庫(kù)是用來存放我們自己所有私有庫(kù)的podspec文件墅拭,就如同官方的https://github.com/CocoaPods/Specs是用來存放所有官方的podspec文件一樣活玲。
在終端執(zhí)行命令:
pod repo add MySpecs https://gitlab.com/xxxxx/MySpecs.git
注意:上面的命令的解釋如下:
pod repo add REPO_NAME SOURCE_URL
其中的 REPO_NAME 是我們要添加的私有repo的名稱(這里我們待會(huì)填的是:Specs),后面是倉(cāng)庫(kù)的 gitlab 地址。這里做的其實(shí)是創(chuàng)建的工作舒憾,也就是在~/.cocoapods/repo目錄下添加了一個(gè)以你的私有repo為名的文件夾镀钓,但是并沒有添加spec文件。
注:如果沒有顯示.cocoapods文件夾珍剑,可能是你的隱藏文件沒打開
打開隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
關(guān)閉隱藏文件的命令:?? defaults write com.apple.finder AppleShowAllFiles -bool false
現(xiàn)在為止掸宛,我們已經(jīng)在本地得到我們自己的私有倉(cāng)庫(kù) MySpecs 死陆,這是一個(gè)空的倉(cāng)庫(kù)招拙。
第三步:關(guān)聯(lián)代碼庫(kù)和配置倉(cāng)庫(kù)
pod repo push MySpecs PayListProject.podspec --use-libraries --allow-warnings
完成后MySpecs的文件夾中就會(huì)出現(xiàn) PayListProject文件夾以及其中的一些配置文件:
第四步:組件化中使用
還記得第二張圖中的ComponentBasedDemo這個(gè)工程么?這個(gè)工程可以理解為用來調(diào)度或者組裝各個(gè)組件的措译。打開這個(gè)工程的podfile文件别凤。
其中看開頭兩行,https://github.com/CocoaPods/Specs這個(gè)我們都知道领虹,存放的是cocoapods中的一些podspec规哪。
而https://github.com/xxxxx/MySpecs是我們自己剛才創(chuàng)建的私有倉(cāng)庫(kù),其中有存放著一些私有依賴代碼庫(kù)(ps:我這邊只舉了一個(gè)例子塌衰,其實(shí)可以放很多個(gè))庫(kù)和庫(kù)之間也可以相互依賴诉稍,只需要在podspec文件中添加相應(yīng)的配置。
最后cd到ComponentBasedDemo的podfile的目錄下最疆,pod install就可以了杯巨!
ps:如果組件中需要添加資源或者使用xib,可以看這里
參考資料:基于GitLab創(chuàng)建私有庫(kù)?? 努酸,iOS組件化??? 服爷,創(chuàng)建私有倉(cāng)庫(kù)中踩過的坑
?????