一爹凹、遠(yuǎn)程私有索引庫創(chuàng)建(本文遠(yuǎn)程倉庫都是基于碼云)
1、創(chuàng)建遠(yuǎn)程私有索引庫MyLib(和創(chuàng)建遠(yuǎn)程工程一樣)镶殷,復(fù)制倉庫地址(點(diǎn)擊克潞探础/下載)
2、打開終端绘趋,將遠(yuǎn)程私有庫關(guān)聯(lián)到本地
cd /Users/jamace/.cocoapods/repos
pod repo add MyLib https://gitee.com/jamace/MyLib.git
https://gitee.com/jamace/MyLib.git是上面?zhèn)}庫MyLib點(diǎn)擊克隆/下載按鈕復(fù)制下來即可
打開前往-前往文件夾-/Users/jamace/.cocoapods/repos會(huì)發(fā)現(xiàn)多了一個(gè)MyLib文件夾
二颤陶、創(chuàng)建私有倉庫(組件工程)
1、在桌面創(chuàng)建文件夾MyDemo
2陷遮、本地私有代碼庫
# cd到MyDemo文件夾目錄
cd /Users/jamace/MyDemo
# 這里的XJTestComponent是組件名稱(自由創(chuàng)建)
pod lib create XJTestComponent
如果提示要輸入碼云賬號(hào)滓走,按照提示要求操作就行
執(zhí)行pod lib create XJTestComponent操作后稍等一會(huì)會(huì)出現(xiàn)一些組件工程的配置,按照以下配置即可
What platform do you want to use?? [ iOS / macOS ]
>iOS
//開發(fā)語言設(shè)置帽馋,根據(jù)自己而定搅方,這里為ObjC
What language do you want to use?? [ Swift / ObjC ]
>ObjC
//是否需要?jiǎng)?chuàng)建一個(gè)demo用來測(cè)試你的組件,這里選擇Yes茬斧,是為了之后對(duì)寫好的組件進(jìn)行測(cè)試
Would you like to include a demo application with your library? [ Yes / No ]
>Yes
//測(cè)試框架
Which testing frameworks will you use? [ Specta / Kiwi / None ]
>None
//是否要做基礎(chǔ)的視圖測(cè)試
Would you like to do view based testing? [ Yes / No ]
>No
//文件前綴
What is your class prefix?
>XJ
3腰懂、創(chuàng)建完成過后,我們的工程會(huì)自動(dòng)打開项秉,創(chuàng)建完成后绣溜,工程的目錄如下
1、XJTestComponent.podspec這個(gè)是倉庫配置文件娄蔼;
2怖喻、在finder打開XJTestComponentView并且復(fù)制這兩個(gè)文件添加到/Users/jamace/Desktop/MyDemo/XJTestComponent/XJTestComponent/Classes/XJTestComponentView這個(gè)文件夾下;
3岁诉、注意刪除ReplaceMe.m文件锚沸,找到XJTestComponent下面的Classes文件夾,這里就是我們要放代碼的地方涕癣,如圖
4哗蜈、本地倉庫建好了,前往碼云創(chuàng)建遠(yuǎn)程倉庫項(xiàng)目https://gitee.com創(chuàng)建項(xiàng)目XJTestComponent
5坠韩、創(chuàng)建成功后配置XJTestComponent項(xiàng)目的.podspec文件距潘,文件位置如上圖XJTestComponent.podspec,做以下修改
0.1.0這個(gè)版本在后面更新組件的時(shí)候會(huì)更改只搁,會(huì)跟tag一起更改
6音比、更新本地組件代碼到碼云上
cd /Users/jamace/MyDemo/XJTestComponent
git remote add origin https://gitee.com/jamace/XJTestComponent.git #添加遠(yuǎn)程倉庫
git push -u origin master #第一次可能會(huì)報(bào)錯(cuò)可嘗試用 git push -u origin master -f 可能會(huì)覆蓋遠(yuǎn)程的修改
git add . #記得后面一定要有 .
git commit -m "創(chuàng)建測(cè)試組件"
git push -u origin master
git tag '0.1.0' #注意:這里的tag號(hào)必須和.podSpec文件的版本號(hào)一致
git push --tags
執(zhí)行上面操作后前往碼云就能看到代碼已經(jīng)提交到XJTestComponent倉庫
7、對(duì)文件進(jìn)行本地驗(yàn)證和遠(yuǎn)程驗(yàn)證(在工程目錄下)
->從本地驗(yàn)證你的pod能否通過驗(yàn)證
pod lib lint --use-libraries --allow-warnings
--verbose:有些非語法錯(cuò)誤是不會(huì)給出錯(cuò)誤原因的氢惋,這個(gè)時(shí)候可以使用--verbose來查看詳細(xì)的驗(yàn)證過程來幫助定位錯(cuò)誤洞翩。
--use-libraries:表示使用靜態(tài)庫或者是framework稽犁,這里主要是解決當(dāng)我們依賴一些framework庫后校驗(yàn)提示找不到庫的時(shí)候用到。
--allow-warnings:表示允許警告骚亿。
->從本地和遠(yuǎn)程驗(yàn)證的pod能否通過驗(yàn)證
pod spec lint --use-libraries --allow-warnings
->將spec 文件提交到本地的私有倉庫已亥,然后再push到遠(yuǎn)程倉庫
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings
->此時(shí)打開/Users/jamace/.cocoapods/repos/MyLib,發(fā)現(xiàn)下面多出XJTestComponent文件
->查看遠(yuǎn)程私有索引庫
->使用終端查看自己的私有組件
pod search XJTestComponent
如果提示
[!] Unable to find a pod with name, author, summary, or description matching XJTestComponent
沒有找到的話可以刪除search_index.json
終端輸入
rm ~/Library/Caches/CocoaPods/search_index.json
重新搜索
pod search XJTestComponent
三来屠、如何在項(xiàng)目中使用組件庫
->新建項(xiàng)目XJTestComponentDemo陷猫,cd到該項(xiàng)目目錄下添加Podfile文件,其中的倉庫遠(yuǎn)程地址指定去哪個(gè)資源去搜索資源
cd /Users/jamace/Desktop/XJTestComponentDemo #項(xiàng)目目錄
vim Podfile #創(chuàng)建Podfile
pod install #安裝組件庫
三的妖、如何更新組件庫
1、我們?cè)谥暗腦JTestComponentView目錄下新增XJTestComponentView1目錄并且添加新的代碼
2足陨、更新代碼到遠(yuǎn)程倉庫
->修改XJTestComponent.podspec中的版本號(hào)0.1.1
->cd到組件庫的位置
cd /Users/jamace/MyDemo/XJTestComponent
git add .
git commit -m '新的更新描述'
git pull #在更新之前先拉下代碼
git push origin master #提交代碼
2嫂粟、倉庫版本更新
git tag -a '0.1.1' -m '這里需要與上面XJTestComponent.podspec中修改的版本一致'
git push --tags
可以看到我們新的0.1.1的tag
3、更新索引庫
->驗(yàn)證本地倉庫
pod lib lint --use-libraries --allow-warnings
->驗(yàn)證本地倉庫和遠(yuǎn)程倉庫
pod spec lint --use-libraries --allow-warnings
->將spec 文件提交到本地的私有倉庫墨缘,然后再push到遠(yuǎn)程倉庫
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings
執(zhí)行這一步如果報(bào)錯(cuò)[!] The repo
MyLib
at../../../.cocoapods/repos/MyLib
is not clean星虹,執(zhí)行以下步驟
pod repo remove MyLib #移除本地私有庫
pod repo add MyLib https://gitee.com/jamace/MyLib.git #在添加本地私有庫
pod repo push MyLib XJTestComponent.podspec --use-libraries --allow-warnings #再執(zhí)行推送
搜索看一下有沒有我們新的0.1.1版本庫
pod search XJTestComponent
如果報(bào)錯(cuò)[!] An unexpected version directory Classes
was encountered for the /Users/jamace/.cocoapods/repos/gitee-jamace-xjtestcomponent/XJTestComponent
Pod in the XJTestComponent
repository.
解決方法:去/Users/jamace/.cocoapods/repos刪除gitee-jamace-xjtestcomponent這個(gè)目錄在執(zhí)行pod search XJTestComponent就好了
四、如何設(shè)置第三方庫依賴
XJTestComponent.podspec配置文件里默認(rèn)s.dependency 'AFNetworking'镊讼,這個(gè)就是設(shè)置組件庫依賴AFNetworking
如果我們只要求某個(gè)文件夾里的類依賴宽涌,而其他類不依賴,那就要如下設(shè)置子庫:
s.subspec '子庫名稱' do |別名|
end
注意上面的deployment_target要設(shè)置成9.0蝶棋,因?yàn)锳FNetworking4.0只支持ios9.0+卸亮,這里設(shè)置的意思是XJTestComponentView這個(gè)文件夾里面的文件依賴AFNetworking,而XJTestComponentView1這個(gè)文件夾里的文件則不設(shè)置依賴玩裙。這樣設(shè)置我們就可以分開安裝了兼贸,比如在我們的新工程XJTestComponentDemo的Podfile中配置,這樣就給我們分開安裝需要的庫了: