為你的庫(kù)添加cocoapods支持

多倫大草原

為你的庫(kù)添加cocoapods支持

前言

本文意在教大家一步一步將自己的pods發(fā)布到CocoaPods中境肾,將自己寫(xiě)的組件或庫(kù)開(kāi)源出去颇象,讓別人輕輕pod install一下即可安裝叹谁。自己在上傳pods過(guò)程中也遇到過(guò)一些小坑,也在此做了說(shuō)明。測(cè)試文件為一個(gè)很簡(jiǎn)單的DynamicLabel類菲盾,旨在上傳pods的過(guò)程,寫(xiě)的不好的地方望磚下留情。

1骆撇、環(huán)境

cocoapods的安裝這里就不再說(shuō)了,另外要說(shuō)明的是你首先要把項(xiàng)目push到github父叙,并release一個(gè)版本打上tag標(biāo)簽(目的在于讓cocoapods能夠根據(jù)你提供的tag來(lái)鎖定版本)神郊,如果沒(méi)有push可cd到你的項(xiàng)目根目錄如下:

//添加
git add -A
//commit
git commit -m"version description"
//push
git push origin master

//打上標(biāo)簽
git tag'0.0.3'
//推送
git push --tags

2、創(chuàng)建podspec文件

cd到你的項(xiàng)目根目錄如下:

//創(chuàng)建podspec文件
pod spec create DynamicLabel

之后會(huì)生成一個(gè).podspec文件趾唱,我這里用sublime打開(kāi)屿岂,可以看到里面有很多待編輯項(xiàng),顧名思義鲸匿,我這里編輯項(xiàng)如下:

s.name         = "DynamicLabel"
s.version      = "0.0.3"
s.summary      = "limited label Scroll display"
s.description  = <<-DESC
limited label Scroll display.
               DESC

s.homepage     = "https://github.com/henvyluk/DynamicLabel"
s.license      = "MIT"
s.author             = { "henvyluk" => "henvyluk@163.com" }
s.platform     = :ios, "7.0"
s.source       = { :git => "https://github.com/henvyluk/DynamicLabel.git", :tag => "0.0.3" }

s.source_files  = "Classes", "DynamicLabel/Classes/**/*.{h,m}"

s.exclude_files = "Classes/Exclude"

s.framework  = "UIKit"
s.requires_arc = true

值得注意的是s.source_files需要根據(jù)podspec文件的相對(duì)位置來(lái)寫(xiě)爷怀,表示DynamicLabel 下的Classes文件夾下的所有文件下的所有.h/.m文件,s.framework是你的項(xiàng)目所用到的庫(kù)带欢,我這里只用到了UIKit运授,如果你的項(xiàng)目中依賴多個(gè)庫(kù)烤惊,可以使用:

s.frameworks = "SomeFramework", "AnotherFramework"

當(dāng)我們開(kāi)發(fā)的庫(kù)中也可能還依賴第三方庫(kù),例如JSONKit吁朦,那么可以使用:

s.dependency "JSONKit", "~> 1.4"

另外如果要添加xib文件柒室,在pod中,xib不能當(dāng)成源文件(即s.source_files),雖然可能會(huì)通過(guò)檢測(cè),但是pod install之后會(huì)報(bào)錯(cuò)逗宜,所以必須要將xib放入資源文件中(即s.resources)雄右,我就遇到過(guò)這種情況,只好更新了一個(gè)版本纺讲,

"Unable to run command 'StripNIB xxx.nib' - this target might include its own product".

再一個(gè)添加圖片資源的話擂仍,類似于xib,不需其它操作,我是將xib和圖片都放在s.Resource中形如:

s.resources = "xxxx/xxx/*.{png,xib}"

這里看一下我的文件目錄:


finder Screenshot

確認(rèn)完畢后可通過(guò)如下做文件校驗(yàn):

pod lib lint

此時(shí)如果有紅色錯(cuò)誤The spec did not pass validation, due to 1 error可通過(guò)在上述指令后加--verbose來(lái)看出錯(cuò)誤出在哪里熬甚,根據(jù)提示的信息在做修改逢渔,這里提醒s.source_files處容易出錯(cuò),注意文件的位置乡括,以及s.framework不要出錯(cuò)肃廓,否則會(huì)項(xiàng)目?jī)?nèi)的代碼不識(shí)別。

當(dāng)出現(xiàn)如下的提示時(shí)就代表驗(yàn)證通過(guò)了诲泌,可以進(jìn)行下一步了:

terminal Screenshot

3盲赊、注冊(cè)Trunk

//分別是你的郵箱和描述
pod trunk register henvyluk@163.com --description='henvy'

之后你的郵箱會(huì)收到確認(rèn)郵件,點(diǎn)擊郵件中的鏈接后驗(yàn)證后:

pod trunk me

如圖則表示注冊(cè)成功敷扫,可以進(jìn)行接下來(lái)的push了


terminal Screenshot

4哀蘑、Trunk push

執(zhí)行:

pod trunk push

如果push過(guò)程中出錯(cuò),再檢查一下podspec文件呻澜,我之前因?yàn)榘姹酒ヅ鋯?wèn)題出了錯(cuò)递礼。如果看到如下圖即代表上傳成功,我的pod版本比較新羹幸,好像舊的版本跟這有點(diǎn)區(qū)別脊髓,會(huì)給dataURL和日至打印,這個(gè)新版本的比較人性化一點(diǎn)栅受,但為啥我覺(jué)得很幼稚有木有将硝。


terminal Screenshot

5、驗(yàn)證

說(shuō)是push成功了怎么說(shuō)也要驗(yàn)證一下吧屏镊,來(lái)search一下:

pod search DynamicLabel

一看握草R捞邸!

terminal Screenshot

push出錯(cuò)了而芥?其實(shí)不然律罢,cocoapods官網(wǎng)已經(jīng)有了我們的代碼,不信可以搜搜看,See Podspec還可以看到我們的項(xiàng)目在Specs倉(cāng)庫(kù)中的具體位置误辑。


coocapods Screenshot

問(wèn)題是我們的電腦~/.cocoapods/repos/master/Specs目錄并未更新沧踏,執(zhí)行:

//更新pod庫(kù)
pod setup

這一步具體做了什么東西呢?將官方的Specs倉(cāng)庫(kù)文件目錄下載下來(lái)巾钉,然后和我們本地的Specs目錄進(jìn)行比對(duì)翘狱,增加的增加,刪除的刪除砰苍。

第一次會(huì)有點(diǎn)慢潦匈,之后再setup的話基本上是秒更,最后setup completed,好了現(xiàn)在是最新的了赚导,再來(lái)search一下茬缩,


terminal Screenshot

要命了,仍然搜不到辟癌,我當(dāng)初就是卡在了這一步寒屯,卡的莫名其妙的荐捻,因?yàn)閷?shí)在想不通還有什么會(huì)影響search黍少,后來(lái)在stackoverflow上有提到search_index.json,這是搜索的緩存目錄处面,

//清除索引緩存
rm ~/Library/Caches/CocoaPods/search_index.json

之后pod search DynamicLabel厂置,等待重建索引后:


terminal Screenshot

6、寫(xiě)在最后

好了至此制作自己的整個(gè)開(kāi)源庫(kù)的過(guò)程就完成了魂角,如果以后要更新版本昵济,同樣修改podspec文件重新push就好了,要注意的是如果你之前提交過(guò)pod野揪,那么你需要去Claim your Pod認(rèn)領(lǐng):

Claim your Pod Screenshot

至此結(jié)束访忿,也望大神不吝指教,郵件henvyluk@163.com,同時(shí)歡迎跳轉(zhuǎn)我的GitHub主頁(yè)討論斯稳,再會(huì)海铆!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挣惰,隨后出現(xiàn)的幾起案子卧斟,更是在濱河造成了極大的恐慌,老刑警劉巖憎茂,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珍语,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡竖幔,警方通過(guò)查閱死者的電腦和手機(jī)板乙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拳氢,“玉大人募逞,你說(shuō)我怎么就攤上這事晓猛。” “怎么了凡辱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵戒职,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我透乾,道長(zhǎng)洪燥,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任乳乌,我火速辦了婚禮捧韵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汉操。我一直安慰自己再来,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布磷瘤。 她就那樣靜靜地躺著芒篷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪采缚。 梳的紋絲不亂的頭發(fā)上针炉,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音扳抽,去河邊找鬼篡帕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贸呢,可吹牛的內(nèi)容都是我干的镰烧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼楞陷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怔鳖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起猜谚,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤败砂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后魏铅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體昌犹,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年览芳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斜姥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铸敏,靈堂內(nèi)的尸體忽然破棺而出缚忧,到底是詐尸還是另有隱情,我是刑警寧澤杈笔,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布闪水,位于F島的核電站,受9級(jí)特大地震影響蒙具,放射性物質(zhì)發(fā)生泄漏球榆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一禁筏、第九天 我趴在偏房一處隱蔽的房頂上張望持钉。 院中可真熱鬧,春花似錦篱昔、人聲如沸每强。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)空执。三九已至,卻和暖如春怀伦,著一層夾襖步出監(jiān)牢的瞬間脆烟,已是汗流浹背山林。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工房待, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驼抹。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓桑孩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親框冀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子流椒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容