開篇:
入戲:
有一天雀鹃,亙亙深夜做了個(gè)夢循衰,夢到自己成為了一個(gè)牛逼的巨佬,坐擁上千萬的開發(fā)者迷弟迷妹粉絲褐澎,開源框架上千款……
一次粉絲見面會(huì)結(jié)束会钝,觀眾散去,亙亙看見會(huì)議的角落坐著一位年紀(jì)尚小的開發(fā)者獨(dú)自發(fā)悶工三,走近聊了幾句迁酸,小弟弟告訴他:原來是一個(gè)剛?cè)胄械拈_發(fā)者,對(duì)私有Pod的房集成不是太明白俭正,因?yàn)檫@個(gè)問題奸鬓,還丟失了一個(gè)很好的就業(yè)機(jī)會(huì)。于是掸读,亙亙告訴他串远,等他回去找時(shí)間出一篇關(guān)于私有Pod集成的博客,幫助這類人搞懂這里面的彎彎繞繞儿惫。于是澡罚,這篇博客誕生了!
好的故事未完肾请,美好即將待續(xù)……
私有pod留搔,我們都不陌生,那么我們?nèi)绻胱寗e的開發(fā)者肆無忌憚的幾個(gè)命令行就嵌入我們的自己做的私有庫使用铛铁,這也是件自豪而牛逼的事隔显,那么却妨,如何制作私有Pod呢?
其實(shí)制作私有pod括眠,把主要的幾個(gè)步驟掌握住彪标,就很簡單了,下面我簡要講解下私有pod的制作步驟以及后續(xù)升級(jí)的步驟
目錄
- 第一步:創(chuàng)建私有庫工程
- 第二步:私有庫本地的配置和集成
- 第三步:Specs 文件倉庫管理
- 第四步:關(guān)于后續(xù)私有庫升級(jí)
第一步:創(chuàng)建私有庫工程
cd到你想放項(xiàng)目的本地目錄下掷豺,比如桌面上新建一個(gè)叫“podKit”的文件夾捞烟,那么,我們依次執(zhí)行以下命令:
- cd desktop
- pod lib create podKit
成功后會(huì)出現(xiàn)以下代碼萌业,按需選擇填寫即可
# 選擇編程語言
What language do you want to use?? [ Swift / ObjC ]
> Objc
# 在你的項(xiàng)目中是否創(chuàng)建一個(gè)demo工程坷襟,為了方便測試,我選擇了Yes
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
# 測試框架選擇哪一個(gè)
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
#要不要做視圖測試
Would you like to do view based testing? [ Yes / No ]
> Yes
# 類前綴名
What is your class prefix?
> SH
Pod私有庫創(chuàng)建成功后會(huì)自動(dòng)打開項(xiàng)目~
第二步:私有庫本地的配置和集成
- 找到剛才創(chuàng)建的podKit文件夾生年,點(diǎn)擊入去婴程,里面的目錄如下:
-
把你想要做成私有庫的文件,整理好抱婉,目錄結(jié)構(gòu)都調(diào)整好档叔,一股腦拷貝到podKit這個(gè)目錄下面,這個(gè)文件夾下面默認(rèn)有個(gè)Classes和Assets文件夾蒸绩,我個(gè)人的習(xí)慣衙四,都會(huì)把它們刪掉,直接把我將要做成私有庫的文件拷貝進(jìn)來患亿,類似這樣:
1-3.png 接下來传蹈,打開項(xiàng)目,打開那個(gè)Example文件下下面的xxx.xcworkspace步藕,這個(gè)不用我多說了吧惦界,這個(gè)時(shí)候你展開的項(xiàng)目,展開Pods -- 啥也沒有咙冗,哈哈哈沾歪,別急,往下繼續(xù)看:
編輯podspec文件
編輯這個(gè)文件之前雾消,需要去github賬號(hào)上灾搏,新建一個(gè)遠(yuǎn)程倉庫,把地址拷過來洗干凈備用立润,新建遠(yuǎn)程倉庫狂窑,我在這不做說明了
它的位置就在根目錄下,就是那個(gè)podKit. podspec范删,在xcode里面打開直接編輯它就行蕾域,上個(gè)圖吧,這個(gè)玩意其實(shí)也簡單:
這個(gè)玩意編輯的時(shí)候一定要小心到旦,最容易出錯(cuò)的一個(gè)環(huán)節(jié)旨巷,驗(yàn)證spec文件的時(shí)候如果這個(gè)文件有問題會(huì)報(bào)錯(cuò)
- cd到我們的Example目錄下,執(zhí)行:pod update --no-repo-update 命令行
這個(gè)時(shí)候再看下剛才的目錄添忘,上圖我已經(jīng)標(biāo)注好了采呐,ClassA 就添加進(jìn)來了,因?yàn)镃lassB文件夾為空搁骑,所以沒有添加進(jìn)來
注意:你要不聽我的話斧吐,不cd到我說的目錄,那你就等著看紅吧(因?yàn)樵谀莻€(gè)目錄下才有PodFile文件呀)仲器,還有別問為啥update后面為啥跟那些小可愛煤率,因?yàn)槟氵@個(gè)時(shí)候還沒有遠(yuǎn)程倉庫
- 然后這時(shí)候在你本地測試一下私有庫是否可以使用
在你的工程下面的Example下,有個(gè)Example for podKit 文件夾乏冀,展開蝶糯,便是我們熟悉的正常xcode項(xiàng)目目錄了,在那做個(gè)#import導(dǎo)入試試就行辆沦,不報(bào)錯(cuò)昼捍,編譯能通過,就成功了
- 驗(yàn)證spec文件
cd到項(xiàng)目根目錄下執(zhí)行: pod lib lint --allow-warnings
1-6.png
- 執(zhí)行了3遍肢扯,第三次成功了妒茬,截圖我有說明,有兩次是反面教材蔚晨,哈哈
這一步乍钻,切記:命令行的執(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后,由于你的倉庫是新建的谨履,建的時(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
到這尝盼,我們的私有庫代碼部分就結(jié)束了吞滞,登錄你的github查看遠(yuǎn)程倉庫,應(yīng)該就有你的代碼了,下面裁赠,我們開始整 spec文件管理倉庫
第三步:Specs 文件倉庫管理
specs 的作用:
Specs殿漠,叫做私有庫文件管理倉庫,也就是說我們后續(xù)對(duì)私有庫升級(jí)佩捞、版本的操作绞幌,全靠這個(gè)東西,它的制作流程和之前制作代碼倉庫的流程一樣一忱,假如我們創(chuàng)建的Specs叫 "SHspec"
- 添加Specs到本地
執(zhí)行命令行:pod repo add SHSpec https://github.com/shLuckySeven/SHSpec.git
這里給大家說個(gè)小竅門:快捷鍵Command+Shift+.查看隱藏文件
1-7.png
如圖:我們的~/.cocoapods/repos/SHSpec出現(xiàn)了莲蜘,它里面就替我們管理了我們的私有pod的spec版本文件
- 將私有庫的.podspec文件添加到本地的Specs中,并同步到遠(yuǎn)端倉庫
cd到我們的私有庫項(xiàng)目根目錄下帘营,一定要cd到這
執(zhí)行: pod repo push SHSpec podKit.podspec
再去剛才說的~/.cocoapods/repos/SHSpec目錄下面票渠,看看:
podKit出現(xiàn)了,而且芬迄,版本號(hào)是0.0.1问顷,登錄github遠(yuǎn)端查看
到這,其實(shí)可以說已經(jīng)非常nice了薯鼠,但是我們還要用我們的私有pod庫择诈,命令行:
pod search podKit
此處,應(yīng)該有掌聲出皇,我覺得羞芍!
第四步:關(guān)于后續(xù)私有庫升級(jí)
1.修改代碼,需改podspec文件里面的版本號(hào)
2.pod update --no-repo-update
3.代碼編譯驗(yàn)證通過之后郊艘,將代碼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倉庫中:
pod repo push SHSpec podKit.podspec
又到了深夜說再見的時(shí)候荷科,觀眾朋友們,下次再見纱注!