私有庫(kù)的是隨著公司在多個(gè)項(xiàng)目開展的時(shí)候,把一些常用的工具類制作成pod,方便在多個(gè)項(xiàng)目中使用,避免了來(lái)回拖入代碼造成的時(shí)間浪費(fèi)祟蚀。iOS組件化實(shí)現(xiàn)基本基于cocoapods,如何使用cocoapods創(chuàng)建自己的組件庫(kù),是實(shí)現(xiàn)組件化的第一要素割卖。
創(chuàng)建一個(gè)遠(yuǎn)程私有庫(kù)前酿,需要一個(gè)私有庫(kù),需要一個(gè)索引庫(kù):
私有庫(kù):用于真正存放組件代碼
索引庫(kù):存放spec文件鹏溯,用于所引導(dǎo)代碼的位置
索引庫(kù)和私有庫(kù)的關(guān)系可以簡(jiǎn)單理解就像指針和對(duì)象關(guān)系罢维,指針就是索引庫(kù),對(duì)象就是私有庫(kù)
以碼云“gitee”為例:
一丙挽、創(chuàng)建私有庫(kù)的索引庫(kù)——(如XXPrivateSpec)
1肺孵、首先在終端命令行 pod repo 查看本地索引庫(kù),可以查看只有一個(gè)Master索引庫(kù)颜阐,默認(rèn)情況下是只有一個(gè)master倉(cāng)庫(kù)平窘,我們常用的SDWebImage,AFNetWoking等的本地索引就在這個(gè)倉(cāng)庫(kù)中。
master
- Type: git (master)
- URL:?https://github.com/CocoaPods/Specs.git
? ? 2瞬浓、添加一個(gè)自己的索引庫(kù) 首先在gitee上創(chuàng)建一個(gè)新的項(xiàng)目命名XXPrivateSpec
? ? 3、添加自己的本地遠(yuǎn)程索引庫(kù) 后面的地址就是遠(yuǎn)端工程的“克隆/下載"地址
pod?repo?add XXPrivateSpec?https://gitee.com/XXX/XXPrivateSpec.git
4蓬坡、可以Command+shif+G 到$?~/.cocoapods/repos 下查看自己的本地倉(cāng)庫(kù)路徑猿棉,添加完以后可以通過pod repo命令查看磅叛,本地會(huì)多一個(gè)你剛才添加的鏡像庫(kù),如果想要移除剛才添加的鏡像庫(kù)萨赁,執(zhí)行pod repo --remove?XXXPrivateSpec命令就可以了弊琴。
? 5、說(shuō)明:該倉(cāng)庫(kù)下只放各組件索引文件杖爽,不存放組件代碼(組件代碼需要重新創(chuàng)建組件工程)
二敲董、創(chuàng)建自己的組件庫(kù)工程(本地和遠(yuǎn)端的倉(cāng)庫(kù)podspec)
? ? 1、碼云托管平臺(tái)上慰安,在Gitee上創(chuàng)建一存放基礎(chǔ)組件的工程XXXComponent(工程創(chuàng)建和上一步類似)
2腋寨、快速創(chuàng)建一個(gè)模板工程用于編輯自己的基礎(chǔ)組件
cd /Users/XXX/Desktop/PrivateLib
? ? ? 終端命令輸入:
? ? ? pod lib create 組件庫(kù)名?
? ? ? 接下來(lái)會(huì)輸入一系列的東西,根據(jù)提示輸入化焕,賬戶密碼等的如下圖:
3萄窜、以上信息完成以后,Xcode會(huì)自動(dòng)打開創(chuàng)建好的模板工程撒桨,在這里可以把自己編的本地組件文件替換工程中的Replace.m文件
? ? 4查刻、終端 cd 命令行 切換到Example文件路徑下,執(zhí)行pod install命令? ??
出現(xiàn)pod installation complete!那么本地私有庫(kù)就完成凤类,工程中就能看到導(dǎo)入的組件庫(kù)文件穗泵,然后可以編輯修改組件庫(kù)
5、最后就是將本地的組件庫(kù)地址提交到遠(yuǎn)端組件庫(kù)工程XXXComponent上(注意此處不是索引庫(kù)谜疤,切莫弄混淆了)
? ? ? ? 5.1 切換到本地組件庫(kù)工程目錄下佃延,執(zhí)行下面三條命令(這里就將模板文件上傳到了遠(yuǎn)端)
cd /Users/XXX/Desktop/PrivateLib/FoundationExtention/XXXComponent
git remote add origin https://gitee.com/XXX/XXXComponent.git
? ??? ??? ??git push -u origin master
5.1 修改模板工程中的podspec文件, 打開Xcode工程茎截,找到.podspec
s.version ?版本號(hào)初次使用不需要修改
s.summary ?一段簡(jiǎn)介描述(可以修改為自己想要的)
s.homepage = '工程主頁(yè)地址'
s.source ? = '項(xiàng)目倉(cāng)庫(kù)地址苇侵,不是索引庫(kù)地址'
?5.2 修改完這些主要信息之后,可以用?pod lib lint --allow-warnings校驗(yàn)本地podspec文件是否正確企锌,如有error則需要逐條修改
? ? ? ? 5.3 保存本地倉(cāng)庫(kù)代碼修改榆浓,打上tag標(biāo)簽,推送到遠(yuǎn)程倉(cāng)庫(kù)撕攒,使用如下命令行
? ??? ??? ??git?add?.
git?commit??-m??'初始化' ? ? ?(-m 后面是對(duì)本次提交信息的描述)
git?push?-u?origin?master
5.4 校驗(yàn)遠(yuǎn)端podspec文件是否正確陡鹃,終端輸入?pod spec lint --allow-warnings
?當(dāng)輸出XXXComponent.podspec passed validation. 說(shuō)明遠(yuǎn)端校驗(yàn)通過
如果出現(xiàn)了警告,可以嘗試將s.homepage的文件地址刪掉一級(jí)嘗試
5.5 給版本打一個(gè)標(biāo)簽
? ? ? ? ? ? git tag 0.1.0
? ? ? ? ? ? git push --tags?
? ? ? ? ? ? 小結(jié):
? ? ? ? ? ? ? ? ? ? 1)打分支這一步很重要抖坪,直接決定下面的步驟是否能夠繼續(xù)萍鲸,當(dāng)我們有版本更新的時(shí)候就要更改版本號(hào)
? ? ? ? ? ? ? ? ? ? 2)這里默認(rèn)是0.1.0,一定要與之前我們?cè)赬code中看到的s.version號(hào)一致擦俐!
5.6 最后一步建立關(guān)聯(lián)脊阴,將podspec文件關(guān)聯(lián)到遠(yuǎn)端私有索引庫(kù)XXXPrivateSpec.pod repo push?XXPrivateSpec ?XXXComponent.podspec--allow-warnings
注意:注意:提交后,依然會(huì)驗(yàn)證 podspec文件,驗(yàn)證通過后 會(huì)自動(dòng)上傳到在遠(yuǎn)程spec索引庫(kù)嘿期。通過這一步我們就同步好了遠(yuǎn)程和本地索引庫(kù)
5.7修改基礎(chǔ)工程進(jìn)行版本迭代品擎,本質(zhì)上修改XXXComponent項(xiàng)目。并且修改是修改podspec文件tag(s.version)备徐,打標(biāo)簽萄传。并切將podspec文件推送到遠(yuǎn)端私有索引庫(kù)。即重復(fù)5.3~5.5 把文件修改推送到遠(yuǎn)端蜜猾。
最后還要進(jìn)行組件庫(kù)與遠(yuǎn)端索引庫(kù)的關(guān)聯(lián):
即:pod repo push?XXPrivateSpec ?XXXComponent.podspec--allow-warnings
三秀菱、創(chuàng)建新工程,使用自己的私有庫(kù)
cd 到新工程目錄
? ? ? ? pod init ? ?這里需要
??當(dāng)我們?cè)谑褂米约簞?chuàng)建的私有庫(kù)時(shí)蹭睡,Podfile文件衍菱,要引用我們之前第一步創(chuàng)建的索引倉(cāng)庫(kù)地址,也就是指針倉(cāng)庫(kù)地址
下面是Podfile
source?'https://github.com/CocoaPods/Specs.git'
source?'https://gitee.com/XXX/XXPrivateSpec.git'
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target?'TestP1'?do
?# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
?use_frameworks!
?pod?'XXXComponent',?'~> 0.1.0'
end
然后 pod install 就可以了