Cocoapods創(chuàng)建podspec說(shuō)明

一.創(chuàng)建遠(yuǎn)程私有庫(kù)

創(chuàng)建一個(gè)私有的podspec包括如下那么幾個(gè)步驟:
1.創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo。
2.創(chuàng)建Pod所需要的項(xiàng)目工程文件。
3.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目。
4.向私有的Spec Repo中提交podspec躏救。
5.在個(gè)人項(xiàng)目中引入私有庫(kù)。
6.更新維護(hù)podspec。

在整個(gè)過(guò)程中我們一共需要兩個(gè)Git倉(cāng)庫(kù)潘飘。一個(gè)是用來(lái)放Pods索引的肮之,也就是第一步中用到的,而且只有在第一次創(chuàng)建遠(yuǎn)程庫(kù)時(shí)才需要卜录;另一個(gè)是用來(lái)存放工程代碼的遠(yuǎn)程倉(cāng)庫(kù)戈擒,不一定是Git倉(cāng)庫(kù),其它的遠(yuǎn)程倉(cāng)庫(kù)也可以暴凑,本文以Git來(lái)介紹峦甩。

1.創(chuàng)建并設(shè)置一個(gè)私有的Spec Repo

Spec Repo是所有Pods的一個(gè)索引,相當(dāng)于一個(gè)容器现喳,所有的Pods都在這個(gè)索引里面凯傲。如 ~/CocoaPods/Specs是所有公共的Pods的索引,稍后我們創(chuàng)建TestSpecs就是我們所有Pods私有庫(kù)的索引嗦篱。

接下來(lái)我們創(chuàng)建Spec Repo冰单,在終端執(zhí)行以下命令:
pod repo add TestSpecs http://XXX/TestSpecs.git

http://XXX/TestSpecs.git 是我們創(chuàng)建好的存放TestSpecs索引的倉(cāng)庫(kù)。
成功之后在 ~/.cocoapods/repos目錄下會(huì)多出一個(gè)TestSpecs文件灸促。第一步完成诫欠。
PS:多人開(kāi)發(fā)時(shí),其他成員也需要執(zhí)行這個(gè)命令浴栽,且其他成員需要有這個(gè)Git倉(cāng)庫(kù)的權(quán)限荒叼。

2.創(chuàng)建Pod所需要的項(xiàng)目工程文件

在終端進(jìn)入需要?jiǎng)?chuàng)建項(xiàng)目的目錄,然后執(zhí)行:
pod lib create TestKit

執(zhí)行完之后會(huì)有幾個(gè)問(wèn)題典鸡,按需要回答即可被廓。回答完之后會(huì)自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴(lài)萝玷。
現(xiàn)在進(jìn)入到項(xiàng)目目錄下的Example目錄下嫁乘,打開(kāi)workspace文件,刪掉Replaceme文件球碉,開(kāi)始編輯TestKit.podspec文件蜓斧,參考以下格式:

Pod::Spec.new do |s|
    s.name             = 'TestKit'
    s.version          = '1.0.0'
    s.summary          = '遠(yuǎn)程庫(kù)測(cè)試'
    s.description      = <<-DESC
        ‘遠(yuǎn)程庫(kù)測(cè)試.’
    DESC
    s.homepage         = 'http://XXX'
    s.license          = { :type => 'MIT', :file => 'LICENSE' }
    s.author           = { 'xujiebing' => 'xujiebing1992@gmail.com' }
    s.source           = { :git => 'http://XXX/TestKit.git', :tag => s.version.to_s }
    s.ios.deployment_target = '8.0'
    s.source_files = 'TestKit/*'
end

添加項(xiàng)目需要的代碼,本地先測(cè)試編譯睁冬,確保編譯通過(guò)挎春。

3.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目

在終端中進(jìn)入BWTKit目錄
將本地工程文件提交到遠(yuǎn)程倉(cāng)庫(kù)。執(zhí)行以下命令:
git add .
git commit -m '初始化項(xiàng)目'
git remote add origin http://XXX/TestKit.git # 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git push origin master # 提交到遠(yuǎn)程倉(cāng)庫(kù)
PS:如果push失敗可以嘗試命令:git push origin master -f # 覆蓋遠(yuǎn)程倉(cāng)庫(kù)

podspec文件中需要獲取Git的tag痴突,所以我們這里需要打上tag搂蜓。執(zhí)行以下命令:
git tag -m '第一個(gè)tag' 1.0.0
git push --tags # 推送tag到遠(yuǎn)程倉(cāng)庫(kù)

4.向私有的Spec Repo中提交podspec

在終端中進(jìn)入TestKit目錄
先本地驗(yàn)證podspec文件,執(zhí)行命令:
pod lib lint

當(dāng)看到以下輸出表示本地驗(yàn)證通過(guò)
-> TestKit (1.0.0)
TestKit passed validation.

接下來(lái)進(jìn)行遠(yuǎn)程驗(yàn)證辽装,執(zhí)行命令:
pod spec lint
當(dāng)看到以下輸出表示遠(yuǎn)程驗(yàn)證通過(guò)
-> TestKit (1.0.0)
TestKit passed validation.

驗(yàn)證完之后向遠(yuǎn)程TestSpecs提交podspec帮碰,執(zhí)行命令:
pod repo push TestSpecs TestKit.podspec
完成之后這個(gè)TestKit庫(kù)就添加到我們的私有TestSpecs中了,可以進(jìn)入到~/.cocoapods/repos/TestSpecs目錄下查看拾积,也可以去遠(yuǎn)程倉(cāng)庫(kù)查看殉挽。

5.在個(gè)人項(xiàng)目中引入私有庫(kù)

在需要引入私有庫(kù)的項(xiàng)目的podfile文件中引入:

source 'https://github.com/CocoaPods/Specs.git'
source 'http://XXX/TestSpecs.git'

pod 'TestKit', '~> 1.0.0'

PS: source 'https://github.com/CocoaPods/Specs.git' 必須要加丰涉,否則項(xiàng)目中引入的共有的Pods庫(kù)將無(wú)法安裝

6.更新維護(hù)podspec

我們已經(jīng)制作好TestKit 1.0.0版本,現(xiàn)在業(yè)務(wù)有變更斯碌,需要對(duì)TestKit進(jìn)行升級(jí)一死。
這是只需要將2,3傻唾,4投慈,5步中的version和tag設(shè)置成新的值,然后重復(fù)2冠骄,3伪煤,4,5步即可凛辣。

二.遠(yuǎn)程私有庫(kù)中引入私有庫(kù)

以TestBizKit引入TestKit為例

1.創(chuàng)建Pod所需要的項(xiàng)目工程文件

在終端進(jìn)入需要?jiǎng)?chuàng)建項(xiàng)目的目錄抱既,然后執(zhí)行:
pod lib create TestBizKit

執(zhí)行完之后會(huì)有幾個(gè)問(wèn)題,按需要回答即可扁誓》辣茫回答完之后會(huì)自動(dòng)執(zhí)行pod install命令創(chuàng)建項(xiàng)目并生成依賴(lài)。
現(xiàn)在進(jìn)入到項(xiàng)目目錄下的Example目錄下蝗敢,打開(kāi)workspace文件捷泞,刪掉Replaceme文件,開(kāi)始編輯TestBizKit.podspec文件寿谴,參考以下格式:

Pod::Spec.new do |s|
    s.name             = 'TestBizKit'
    s.version          = '1.0.0'
    s.summary          = '測(cè)試'
    s.description      = <<-DESC
    ‘測(cè)試.’
    DESC
    s.homepage         = 'http://XXX'
    s.license          = { :type => 'MIT', :file => 'LICENSE' }
    s.author           = { 'xujiebing' => 'xujiebing1992@gmail.com' }
    s.source           = { :git => 'http://XXX/TestBizKit.git', :tag => s.version.to_s }
    s.ios.deployment_target = '8.0'
    s.source_files = 'TestBizKit/*'
    s.dependency 'TestKit' # 注意:這一步比較關(guān)鍵
end

在Podfile中加入:# 注意:這一步有所區(qū)別
source 'https://github.com/CocoaPods/Specs.git'
source 'http://XXX/TestSpecs.git'
進(jìn)入Example目錄下執(zhí)行 pod install

添加項(xiàng)目需要的代碼肚邢,本地先測(cè)試編譯,確保編譯通過(guò)拭卿。

2.向遠(yuǎn)程倉(cāng)庫(kù)提交工程項(xiàng)目

在終端中進(jìn)入BWTBaseBiz目錄
將本地工程文件提交到遠(yuǎn)程倉(cāng)庫(kù)。執(zhí)行以下命令:
git add .
git commit -m '初始化項(xiàng)目'
git remote add origin http://XXX/TestBizKit.git # 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
git push origin master # 提交到遠(yuǎn)程倉(cāng)庫(kù)
PS:如果push失敗可以嘗試命令:git push origin master -f # 覆蓋遠(yuǎn)程倉(cāng)庫(kù)

podspec文件中需要獲取Git的tag贱纠,所以我們這里需要打上tag峻厚。執(zhí)行以下命令:
git tag -m '第一個(gè)tag' 1.0.0
git push --tags # 推送tag到遠(yuǎn)程倉(cāng)庫(kù)

3.向私有的Spec Repo中提交podspec

在終端中進(jìn)入TestBizKit目錄
先本地驗(yàn)證podspec文件,執(zhí)行命令:# 注意:這一步有區(qū)別
pod lib lint --sources=http://XXX/TestSpecs.git,https://github.com/CocoaPods/Specs.git

當(dāng)看到以下輸出表示本地驗(yàn)證通過(guò)
-> TestBizKit (1.0.0)
TestBizKit passed validation.

接下來(lái)進(jìn)行遠(yuǎn)程驗(yàn)證谆焊,執(zhí)行命令:# 注意:這一步有區(qū)別
pod spec lint --sources=http://git.bwton.com/msx-client-ios/TestSpecs.git,https://github.com/CocoaPods/Specs.git
當(dāng)看到以下輸出表示遠(yuǎn)程驗(yàn)證通過(guò)
-> TestBizKit (1.0.0)
TestBizKit passed validation.

驗(yàn)證完之后向遠(yuǎn)程TestSpecs提交podspec惠桃,執(zhí)行命令:# 注意:這一步有區(qū)別
pod repo push TestSpecs BWTKit.podspec --sources=http://git.bwton.com/msx-client-ios/TestSpecs.git,https://github.com/CocoaPods/Specs.git
完成之后這個(gè)BWTKit庫(kù)就添加到我們的私有TestSpecs中了,可以進(jìn)入到~/.cocoapods/repos/TestSpecs目錄下查看辖试,也可以去遠(yuǎn)程倉(cāng)庫(kù)查看辜王。私有庫(kù)引入私有庫(kù)制作完畢。

4.在個(gè)人項(xiàng)目中引入私有庫(kù)

在需要引入私有庫(kù)的項(xiàng)目的podfile文件中引入:

source 'https://github.com/CocoaPods/Specs.git'
source 'http://git.bwton.com/msx-client-ios/TestSpecs.git'

pod 'TestBizKit', '~> 1.0.0'

這時(shí)TestKit和TestBizKit都會(huì)被引入到項(xiàng)目中

三.更新私有庫(kù)

搜索不到遠(yuǎn)程私有庫(kù)時(shí)罐孝,可以執(zhí)行以下操作:
1.進(jìn)入終端執(zhí)行命令:
rm ~/Library/Caches/CocoaPods/search_index.json
2.進(jìn)入到本地索引文件目錄(~/.cocoapods/repos/TestSpecs)下執(zhí)行命令:
git pull
接著搜索私有庫(kù)即可搜到

四.如何刪除私有庫(kù)

1.刪除整個(gè)TestSpecs文件呐馆,執(zhí)行命令:
pod repo remove TestSpecs
這樣本地的就刪除了,還可以通過(guò)以下命令加回來(lái):
pod repo add TestSpecs http://git.bwton.com/msx-client-ios/TestSpecs.git

2.刪除某個(gè)私有庫(kù)
進(jìn)入目錄 ~/.cocoapods/repos/TestSpecs下,刪除私有庫(kù)目錄莲兢,執(zhí)行命令:
rm -Rf TestKit
然后將本地的修改推到遠(yuǎn)程庫(kù)汹来,執(zhí)行命令:
git add -A
git commit -m '刪除TestKit私有庫(kù)'
git push origin master
操作完畢
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末续膳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子收班,更是在濱河造成了極大的恐慌坟岔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摔桦,死亡現(xiàn)場(chǎng)離奇詭異社付,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)邻耕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)鸥咖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赊豌,你說(shuō)我怎么就攤上這事扛或。” “怎么了碘饼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵熙兔,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我艾恼,道長(zhǎng)住涉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任钠绍,我火速辦了婚禮舆声,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柳爽。我一直安慰自己媳握,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布磷脯。 她就那樣靜靜地躺著蛾找,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赵誓。 梳的紋絲不亂的頭發(fā)上打毛,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音俩功,去河邊找鬼幻枉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诡蜓,可吹牛的內(nèi)容都是我干的熬甫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼万牺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罗珍!你這毒婦竟也來(lái)了洽腺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤覆旱,失蹤者是張志新(化名)和其女友劉穎蘸朋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扣唱,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藕坯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了噪沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炼彪。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖正歼,靈堂內(nèi)的尸體忽然破棺而出辐马,到底是詐尸還是另有隱情,我是刑警寧澤局义,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布喜爷,位于F島的核電站,受9級(jí)特大地震影響萄唇,放射性物質(zhì)發(fā)生泄漏檩帐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一另萤、第九天 我趴在偏房一處隱蔽的房頂上張望湃密。 院中可真熱鬧,春花似錦四敞、人聲如沸泛源。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俩由。三九已至,卻和暖如春癌蚁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兜畸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工努释, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咬摇。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓伐蒂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親肛鹏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逸邦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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