說明
這里說的完全是從實用的角度出發(fā)的灌旧,首先是能用策添,但是不做原因的追究剧蚣。這個會在以后的文章中研究學(xué)習(xí),這個非常符合我本人的學(xué)習(xí)路線——先看效果再探究其原因档址。關(guān)于自制Cocoapod庫網(wǎng)上有人已經(jīng)寫了很多文章,我并不是在效仿贰拿,我只是在寫我自己的心得體會而已赐写。以下說的全都是順序的步驟。
github工程
很簡單乘粒,你是你的源代碼所在的工程豌注。這還用說嗎?還是說一說吧灯萍,免得被忽略了轧铁,我知道你潛意識里是知道的,所以這里提的并不多旦棉。
創(chuàng)建XXX.podspec文件
這個文件的專業(yè)名詞叫啥玩意齿风,我沒去研究,但是從使用的角度來講他爸,它就是個配置文件聂宾。如何創(chuàng)建呢?很簡單诊笤,先cd到你的github目錄下系谐,然后執(zhí)行pod spec create [項目名字]命令,它就會在當(dāng)前目錄下生成一個[項目名字].podspec文件讨跟。
如何配置XXX.podspec文件
這里面其實沒啥玩意纪他,大部分都是注釋,或者可以說成是備選項晾匠,在這里只說說關(guān)鍵的部分茶袒。下面我準備結(jié)合圖片來說明。
-
s.name:就是這個庫的名字凉馆,就是下圖這個薪寓。
-
s.version:就是這個庫的版本號亡资,也就是下面這個。
-
s.summary:這個用來說明該庫的介紹向叉,是下面這個锥腻。
- s.description:這個我還不清楚是干啥的,不過這個是必填的母谎。你需要在<<-DESC瘦黑,DESC之間填入描述性文字。
- s.homepage:這個就是你的項目的github地址奇唤。
- s.license:許可證幸斥,這個是必須的,一般來說正規(guī)點的都是用一個文件型的許可證咬扇,好像還是需要申請的甲葬。但是如果你想自己申請,其實可以不用費勁懈贺,直接把許可證賦值為MIT演顾,于是變成了s.license = "MIT"。
- s.author:作者隅居,沒錯了,就是你啦葛虐,那么如何證明你是你呢胎源?你需要提供你的昵稱和郵箱。舉個例子{ "非主流程序員" => "13207533103@163.com" }屿脐,哈哈這個其實就是我啦涕蚤。
- s.platform:就是對于iOS系統(tǒng)版本的兼容性,這里應(yīng)該填的是兼容的最低iOS版本號的诵,我填的值是s.platform = :ios, "10.0"万栅。
- s.source:源代碼所在地址,我填的值是{ :git => "https://github.com/AbnormalProgrammer/BackForward.git", :tag => "#{s.version}" }西疤。由于s.version是前面設(shè)定好的烦粒,所以在這里直接使用就好了。
- s.source_files:這個是你寫的代碼的實質(zhì)所在代赁,一般來說你是要在github目錄中建立一個單獨的文件夾扰她,并在里面放入你的源代碼文件。這個直接使用它自帶的默認值就行芭碍,即"Classes", "Classes/*/.{h,m}"徒役。這個好像是說,這個文件夾叫做Classes窖壕,后面的應(yīng)該該文件夾中.h和.m文件忧勿,里面的都是通配符杉女。
驗證XXX.podspec文件的正確性
輸入pod lib lint StromanBackForward.podspec --allow-warnings命令即可。如果出現(xiàn)了錯誤自然就通不過嘛鸳吸,但是如果是警告那種熏挎,并且還是針對于語言本身沒有錯,但是pod不認賬的那種警告层释,如果遇到這種情況通不過婆瓜,那就有點太冤了,于是要添加--allow-warnings免得麻煩贡羔。
提交代碼
你需要把github下面的源代碼準備好廉白,主要有供別人學(xué)習(xí)你的這個玩意如何使用的demo,源代碼所在文件夾以及說明性的readme.md即可乖寒。在提交以后猴蹂,你需要在本次提交上面打tag,然后需要把這個tag推送到遠程對應(yīng)分支上面楣嘁,把tag推送到遠端這個事情一定要做磅轻,不然pod會認為你是在新分支上面發(fā)布。另外逐虚,這個tag最好跟版本號是一樣的聋溜,這樣github上面tag就代表了你的庫的版本號。
在pod中添加你的庫
pod其實也是一個庫叭爱,pod一開始是沒有你的庫的撮躁,所以你需要在pod庫中把你的庫添加進去。使用的命令是pod repo add StromanBackForward https://github.com/AbnormalProgrammer/BackForward master买雾,不過在這里我用的是我自己的倉庫把曼。這個也是只有在新建立pod庫的時候才需要做。
把你的庫推送到pod中去
這個沒啥好解釋的漓穿,這就跟你創(chuàng)建了一個github倉庫嗤军,然后再把自己的代碼推送到遠程分支上一樣。所用的命令就是pod repo push StromanBackForward StromanBackForward.podspec --allow-warnings晃危,這里面有需要--allow-warnings叙赚,否則會因為警告導(dǎo)致失敗。
這一步成功以后山害,你就可以通過pod search命令找到你的庫了纠俭。但是此時你并不能像正常的庫一樣去pod install或者pod update。
這一步需要訪問你的私賬倉庫浪慌,而現(xiàn)在一般使用token作為密碼冤荆,假如你忘了你已經(jīng)在使用token作為密碼,而仍然嘗試使用原來的密碼的話权纤,就會出現(xiàn)賬戶名密碼不匹配的錯誤钓简。值得注意的是這里輸入的應(yīng)該是賬戶名乌妒,而不是賬號。
擁有trunk賬號外邓。
在這一步Cocoapods需要訪問你的私人倉庫撤蚊,現(xiàn)在都是用token作為密碼的,有的時候可能導(dǎo)致訪問失敗损话,原因是賬戶名和密碼不匹配侦啸,可能是因為你忘記了已經(jīng)使用了token作為密碼導(dǎo)致的。
這個trunk具體應(yīng)該怎么翻譯丧枪?我也不知道光涂,不過從實用角度叫它像是一個上傳代碼接口。pod的用法是要使用庫隨便用拧烦,只要你知道方法忘闻,但是你要上傳自己的庫就必須要有一個賬戶。首先是要sudo gem install cocoapods一下恋博,如果你遇到/usr/bin寫權(quán)限失敗的話就換成sudo gem install -n /usr/local/bin cocoapods命令齐佳,如果是由于網(wǎng)絡(luò)原因?qū)е碌氖。悄氵€是翻墻吧债沮。如果你沒有trunk賬戶炼吴,則需要注冊一個,實例就是pod trunk register [郵箱] [昵稱]疫衩,然后Cocoapod就會向你注冊的郵箱發(fā)送一封激活郵件缺厉,激活以后就可以使用pod trunk me命令,開啟你注冊的這個賬戶隧土。
通過trunk推送庫
可以通過pod trunk push [xxx.podspec的路徑] --allow-warnings把庫推送到pod repo中去,這里面也要使用--allow-warnings來避免因為警告導(dǎo)致失敗命爬。這一步成功以后曹傀,恭喜你的你的庫就可以像AFNetWorking之類的庫一樣通過pod安裝了。
為什么在別的電腦上搜不到自己的庫饲宛?
因為pod在本地維持了一個庫的緩存皆愉,你在本地提交的庫就已經(jīng)被緩存到本地了。但是你在別的電腦去搜索的話艇抠, 人家的緩存里面是沒有你的庫的幕庐,所以會出現(xiàn)Unable to find a pod with name, author, summary, or description matching XXX的提示。所以你只需要更新一下這臺電腦上的pod緩存即可家淤,方法是先rm -rf ~/Library/Caches/Cocoapods刪除本地pod緩存异剥,然后再搜索,pod會自動建立新的緩存絮重,成功以后你就能在這臺電腦上搜索到你自己的庫了冤寿。如果發(fā)現(xiàn)你剛剛更新的pod沒有被search出來歹苦,那就執(zhí)行
pod repo update
,然后再次search就可以看到了督怜。