iOS 私有庫(kù)創(chuàng)建

私有庫(kù)的是隨著公司在多個(gè)項(xiàng)目開(kāi)展的時(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ù)——一般的命名方式以Repo或者Spec (如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?addXXPrivateSpec?https://gitee.com/XXX/XXPrivateSpec.git

4、可以Command+shif+G 到$?~/.cocoapods/repos 下查看自己的本地倉(cāng)庫(kù)路徑,添加完以后可以通過(guò)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)打開(kāi)創(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文件, 打開(kāi)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)通過(guò)

如果出現(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)證通過(guò)后 會(huì)自動(dòng)上傳到在遠(yuǎn)程spec索引庫(kù)。通過(guò)這一步我們就同步好了遠(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 就可以了

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

相關(guān)閱讀更多精彩內(nèi)容

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