開(kāi)篇:
入戲:
有一天,亙亙深夜做了個(gè)夢(mèng),夢(mèng)到自己成為了一個(gè)牛逼的巨佬,坐擁上千萬(wàn)的開(kāi)發(fā)者迷弟迷妹粉絲,開(kāi)源框架上千款……
一次粉絲見(jiàn)面會(huì)結(jié)束,觀眾散去,亙亙看見(jiàn)會(huì)議的角落坐著一位年紀(jì)尚小的開(kāi)發(fā)者獨(dú)自發(fā)悶,走近聊了幾句,小弟弟告訴他:原來(lái)是一個(gè)剛?cè)胄械拈_(kāi)發(fā)者,對(duì)私有Pod的房集成不是太明白,因?yàn)檫@個(gè)問(wèn)題,還丟失了一個(gè)很好的就業(yè)機(jī)會(huì)。于是,亙亙告訴他,等他回去找時(shí)間出一篇關(guān)于私有Pod集成的博客,幫助這類(lèi)人搞懂這里面的彎彎繞繞。于是,這篇博客誕生了!
好的故事未完,美好即將待續(xù)……
私有pod,我們都不陌生,那么我們?nèi)绻胱寗e的開(kāi)發(fā)者肆無(wú)忌憚的幾個(gè)命令行就嵌入我們的自己做的私有庫(kù)使用,這也是件自豪而牛逼的事,那么,如何制作私有Pod呢?
其實(shí)制作私有pod,把主要的幾個(gè)步驟掌握住,就很簡(jiǎn)單了,下面我簡(jiǎn)要講解下私有pod的制作步驟以及后續(xù)升級(jí)的步驟
目錄
- 第一步:創(chuàng)建私有庫(kù)工程
- 第二步:私有庫(kù)本地的配置和集成
- 第三步:Specs 文件倉(cāng)庫(kù)管理
- 第四步:關(guān)于后續(xù)私有庫(kù)升級(jí)
第一步:創(chuàng)建私有庫(kù)工程
cd到你想放項(xiàng)目的本地目錄下,比如桌面上新建一個(gè)叫“podKit”的文件夾,那么,我們依次執(zhí)行以下命令:
- cd desktop
- pod lib create podKit
成功后會(huì)出現(xiàn)以下代碼,按需選擇填寫(xiě)即可
# 選擇編程語(yǔ)言
What language do you want to use?? [ Swift / ObjC ]
> Objc
# 在你的項(xiàng)目中是否創(chuàng)建一個(gè)demo工程,為了方便測(cè)試,我選擇了Yes
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
# 測(cè)試框架選擇哪一個(gè)
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
#要不要做視圖測(cè)試
Would you like to do view based testing? [ Yes / No ]
> Yes
# 類(lèi)前綴名
What is your class prefix?
> SH

Pod私有庫(kù)創(chuàng)建成功后會(huì)自動(dòng)打開(kāi)項(xiàng)目~
第二步:私有庫(kù)本地的配置和集成
- 找到剛才創(chuàng)建的podKit文件夾,點(diǎn)擊入去,里面的目錄如下:

-
把你想要做成私有庫(kù)的文件,整理好,目錄結(jié)構(gòu)都調(diào)整好,一股腦拷貝到podKit這個(gè)目錄下面,這個(gè)文件夾下面默認(rèn)有個(gè)Classes和Assets文件夾,我個(gè)人的習(xí)慣,都會(huì)把它們刪掉,直接把我將要做成私有庫(kù)的文件拷貝進(jìn)來(lái),類(lèi)似這樣:
1-3.png 接下來(lái),打開(kāi)項(xiàng)目,打開(kāi)那個(gè)Example文件下下面的xxx.xcworkspace,這個(gè)不用我多說(shuō)了吧,這個(gè)時(shí)候你展開(kāi)的項(xiàng)目,展開(kāi)Pods -- 啥也沒(méi)有,哈哈哈,別急,往下繼續(xù)看:
編輯podspec文件
編輯這個(gè)文件之前,需要去github賬號(hào)上,新建一個(gè)遠(yuǎn)程倉(cāng)庫(kù),把地址拷過(guò)來(lái)洗干凈備用,新建遠(yuǎn)程倉(cāng)庫(kù),我在這不做說(shuō)明了
它的位置就在根目錄下,就是那個(gè)podKit. podspec,在xcode里面打開(kāi)直接編輯它就行,上個(gè)圖吧,這個(gè)玩意其實(shí)也簡(jiǎn)單:

這個(gè)玩意編輯的時(shí)候一定要小心,最容易出錯(cuò)的一個(gè)環(huán)節(jié),驗(yàn)證spec文件的時(shí)候如果這個(gè)文件有問(wèn)題會(huì)報(bào)錯(cuò)
- cd到我們的Example目錄下,執(zhí)行:pod update --no-repo-update 命令行
這個(gè)時(shí)候再看下剛才的目錄,上圖我已經(jīng)標(biāo)注好了,ClassA 就添加進(jìn)來(lái)了,因?yàn)镃lassB文件夾為空,所以沒(méi)有添加進(jìn)來(lái)
注意:你要不聽(tīng)我的話,不cd到我說(shuō)的目錄,那你就等著看紅吧(因?yàn)樵谀莻€(gè)目錄下才有PodFile文件呀),還有別問(wèn)為啥update后面為啥跟那些小可愛(ài),因?yàn)槟氵@個(gè)時(shí)候還沒(méi)有遠(yuǎn)程倉(cāng)庫(kù)
- 然后這時(shí)候在你本地測(cè)試一下私有庫(kù)是否可以使用
在你的工程下面的Example下,有個(gè)Example for podKit 文件夾,展開(kāi),便是我們熟悉的正常xcode項(xiàng)目目錄了,在那做個(gè)#import導(dǎo)入試試就行,不報(bào)錯(cuò),編譯能通過(guò),就成功了
- 驗(yàn)證spec文件
cd到項(xiàng)目根目錄下執(zhí)行: pod lib lint --allow-warnings
1-6.png
- 執(zhí)行了3遍,第三次成功了,截圖我有說(shuō)明,有兩次是反面教材,哈哈
這一步,切記:命令行的執(zhí)行目錄是不同的:
pod lib lint --allow-warnings是在項(xiàng)目根目錄下
pod update --no-repo-update 是在Example目錄下
- 項(xiàng)目發(fā)布,git提交操作
依次執(zhí)行以下命令,一定要按照順序執(zhí)行:
- git git remote add origin https://github.com/shLuckySeven/podKit.git
- git status
- git add .
- git status
- git commit -m "提交信息"
- git pull origin master --allow-unrelated-histories
- 這一步,注意:上面執(zhí)行完pull origin master后,由于你的倉(cāng)庫(kù)是新建的,建的時(shí)候我們可能創(chuàng)建了README和ignore文件,所以pull的時(shí)候,和本地的文件會(huì)有沖突,所以,這個(gè)時(shí)候我們繼續(xù)執(zhí)行:
- git status 查看沖突
- git add .
- git commit -m "解決沖突
- git push origin master
到這,應(yīng)該就成功了,如果還是報(bào)錯(cuò),那你就自行百度吧,或者對(duì)著我的步驟再仔細(xì)核對(duì)一遍
8-1. 打tag
- git tag 0.0.1
- git push origin 0.0.1
到這,我們的私有庫(kù)代碼部分就結(jié)束了,登錄你的github查看遠(yuǎn)程倉(cāng)庫(kù),應(yīng)該就有你的代碼了,下面,我們開(kāi)始整 spec文件管理倉(cāng)庫(kù)
第三步:Specs 文件倉(cāng)庫(kù)管理
specs 的作用:
Specs,叫做私有庫(kù)文件管理倉(cāng)庫(kù),也就是說(shuō)我們后續(xù)對(duì)私有庫(kù)升級(jí)、版本的操作,全靠這個(gè)東西,它的制作流程和之前制作代碼倉(cāng)庫(kù)的流程一樣,假如我們創(chuàng)建的Specs叫 "SHspec"
- 添加Specs到本地
執(zhí)行命令行:pod repo add SHSpec https://github.com/shLuckySeven/SHSpec.git
這里給大家說(shuō)個(gè)小竅門(mén):快捷鍵Command+Shift+.查看隱藏文件
1-7.png
如圖:我們的~/.cocoapods/repos/SHSpec出現(xiàn)了,它里面就替我們管理了我們的私有pod的spec版本文件
- 將私有庫(kù)的.podspec文件添加到本地的Specs中,并同步到遠(yuǎn)端倉(cāng)庫(kù)
cd到我們的私有庫(kù)項(xiàng)目根目錄下,一定要cd到這
執(zhí)行: pod repo push SHSpec podKit.podspec

再去剛才說(shuō)的~/.cocoapods/repos/SHSpec目錄下面,看看:

podKit出現(xiàn)了,而且,版本號(hào)是0.0.1,登錄github遠(yuǎn)端查看

到這,其實(shí)可以說(shuō)已經(jīng)非常nice了,但是我們還要用我們的私有pod庫(kù),命令行:
pod search podKit
此處,應(yīng)該有掌聲,我覺(jué)得!
第四步:關(guān)于后續(xù)私有庫(kù)升級(jí)
1.修改代碼,需改podspec文件里面的版本號(hào)
2.pod update --no-repo-update
3.代碼編譯驗(yàn)證通過(guò)之后,將代碼push到遠(yuǎn)端
4.打新的tag
git tag -a '0.0.1' -m '描述' //添加tag
git tag //查看tag
5.podspec文件驗(yàn)證:pod lib lint --allow-warnings
6.將podspec文件push到Specs倉(cāng)庫(kù)中:
pod repo push SHSpec podKit.podspec
又到了深夜說(shuō)再見(jiàn)的時(shí)候,觀眾朋友們,下次再見(jiàn)!


