CocoaPods實(shí)踐

? ? ?最近在學(xué)習(xí)cocoaPods嗤朴,在使用cocoaPods的時候遇到一些問題,記錄下來沐飘,分享給大家游桩,希望多多交流。

一耐朴、簡介:

? ? ?Cocoapods是OS X和iOS下的一個第三方庫管理工具借卧,并且支持Objective-C和swifit語言。通過Cocoapods為項(xiàng)目添加稱為"Pods"的依賴庫(這些庫必須是Cocoapods所支持的)筛峭,并且輕松實(shí)現(xiàn)第三方庫的版本管理铐刘。

二、安裝cocoaPods:

? ? ?這一塊不是重點(diǎn)影晓,大概講講镰吵,CocoaPods用Ruby寫的檩禾,所以首先安裝一下ruby環(huán)境,具體操作可以參考http://www.2cto.com/kf/201411/348389.html疤祭。然后用淘寶鏡像替換cocoaPods.org盼产,并安裝cocoaPods,在終端執(zhí)行:

gem sources --removehttps://rubygems.org/

gem sources -ahttp://ruby.taobao.org/

sudo gem install cocoapods

至此勺馆,cocoaPods安裝完成戏售,為驗(yàn)證是否安裝成功,可以查看cocoaPods的版本號:

pod --version

三谓传、導(dǎo)入第三方公有庫:

? ? ?cocoaPods最常用的是pod命令蜈项,例如搜索AfNetworking在cocoaPods中的所有可用版本芹关,在終端執(zhí)行:

pod search AFNetworking

為了給一個新建項(xiàng)目導(dǎo)入第三方庫续挟,需進(jìn)行如下步驟:

1、cd到當(dāng)前工程目錄侥衬,新建一個podfile文件诗祸,在終端執(zhí)行:

touch Podfile

在工程中多了個Podfile文件

Podfile

接下來配置Podfile文件,格式如下

platform :ios, '7.0'

pod 'AFNetworking', '3.0.4'

pod 'UIView+Positioning', '1.1'

pod 'Masonry', '0.6.2'

例如pod 'AFNetworking', '3.0.4'是指為項(xiàng)目引入3.0.4版本的AFNetworking轴总,終端執(zhí)行:

pod install

執(zhí)行該命令直颅,cocoaPods默認(rèn)更新資源庫,可以加上--no-repo-update命令禁止更新怀樟。執(zhí)行成功的話功偿,會多出.xcworkspace文件和Podfile.lock文件,打開.xcworkspace往堡,目錄中多出Pods工程械荷。點(diǎn)擊工程文件,發(fā)現(xiàn)每個庫都是一個Target虑灰《窒梗可以在PFHealth工程里面導(dǎo)入第三方庫開發(fā)了。

工程目錄

Podfile.lock:該文件用來保存安裝的Pods依賴庫的版本穆咐,當(dāng)執(zhí)行完pod install命令后颤诀,lock文件會記錄當(dāng)前導(dǎo)入第三方庫的版本號及其依賴庫的版本號,當(dāng)再次pod install時对湃,cocoaPods會去取lock文件記錄的版本號崖叫,而不會去取最新的版本,這對于團(tuán)隊(duì)開發(fā)很有用拍柒。

pod install命令和pod update命令:一開始我也弄不清它倆的區(qū)別归露,后來試了一下,總結(jié)一下:在podfile文件里面編輯

pod 'AFNetworking'

執(zhí)行pod install命令導(dǎo)入的庫根據(jù)lock文件記錄的版本號而定斤儿,例如lock文件里面AFN的版本號是2.5.0剧包,則執(zhí)行pod install命令導(dǎo)入2.5.0的AFN恐锦,但是pod update命令不受lock文件制約,會取最新版本的AFN導(dǎo)入項(xiàng)目疆液。另外podfile文件里面可以指定工程中不同target導(dǎo)入不同的第三方庫一铅,具體參考https://guides.cocoapods.org/syntax/podfile.html

四堕油、搭建cocoaPods私有庫

首先講講個人對于cocoapods導(dǎo)入第三方庫機(jī)制的理解潘飘,終端執(zhí)行

/Users/PF/.cocoapods/repos

repos目錄下有個master文件夾,進(jìn)入master->Specs掉缺,里面存放許多文件夾卜录,對應(yīng)一個第三方庫的名稱轰绵,里面又維護(hù)了若干版本文件夾拧廊,每個文件夾里面維護(hù)一個podspec.json文件撑螺,該文件存有遠(yuǎn)端github倉庫的索引翘紊。以下是podspec.json:

podspec文件

還有一些字段在這個spec文件沒有配置坊秸,例如resource_bundles绍赛,就不說明了趾痘。當(dāng)執(zhí)行pod install命令時逆济,會根據(jù)podfile文件中列出的庫名稱及版本號去repos里面查找蜀肘,然后找到對應(yīng)的podspec.json绊汹,然后根據(jù)source和source_files找到github地址去下載。

1扮宠、創(chuàng)建私有Spec Repo

master文件夾是官方維護(hù)的西乖,我們需要創(chuàng)建一個類似于master的repos,管理自己的私有庫spec文件坛增,終端執(zhí)行:

pod repo add PFSpec https://coding.net/u/panfeng/p/PFBaseSDK

2获雕、創(chuàng)建私有庫項(xiàng)目

cd到要創(chuàng)建項(xiàng)目的目錄并執(zhí)行

pod lib create PFBaseSDK

PFBaseSDK是自定義的私有庫項(xiàng)目名稱,終端會讓你確認(rèn)5個問題

What language do you want to use?? [ObjC/ Swift ]

Would you like to include a demo application with your library? [Yes/ No ]

Which testing frameworks will you use? [Specta/ Kiwi / None ]

Would you like to do view based testing? [Yes/ No ]

What is your class prefix ?->PF

創(chuàng)建成功后進(jìn)入demo轿偎,打開workspace

工程目錄

上面是demo工程典鸡,在podspec文件中配置一下,s.source_files和s.resource_bundles是私有庫源文件坏晦、資源文件的地址萝玷。下面是Pods私有庫工程,在classes文件夾下添加類昆婿,例如PFHTTPRequest球碉。寫好后cd到demo工程目錄下,執(zhí)行pod install仓蛆,這樣demo里面就可以引入寫好的類PFHTTPRequest睁冬。

3、本地驗(yàn)證私有庫

首先驗(yàn)證該項(xiàng)目能否被添加到pod repos中(warning會導(dǎo)致添加失敗)豆拨,終端執(zhí)行:

pod lib lint

PFBaseSDK passed validation表示驗(yàn)證成功直奋,然后將私有庫項(xiàng)目push到遠(yuǎn)端倉庫,倉庫地址和pod repo add命令后面的倉庫地址一致施禾,同時打上tag版本號脚线,例如0.1.3。接下來在本地項(xiàng)目中引入PFBaseSDK弥搞,cd到相應(yīng)工程邮绿,修改podfile文件,添加

pod 'PFBaseSDK', :path =>'~/code/Cocoapods/podTest/PFBaseSDK'

在終端執(zhí)行pod install 攀例,此時項(xiàng)目中出現(xiàn)私有庫船逮,說明本地引入成功

導(dǎo)入PFBaseSDK

4、提交podspec到Repos

在終端執(zhí)行:

pod repo push PFSpec PFBaseSDK.podspec

將podspec提交到cocoapods的repos->PFSpec目錄下粤铭,多出PFBaseSDK目錄挖胃,里面是相應(yīng)版本號的podspec

podspec
pod search

終端執(zhí)行pod search PFBaseSDK,出現(xiàn)相應(yīng)版本號的私有庫承耿,說明已上傳至冠骄。cd到需要引入私有庫的工程目錄伪煤,修改podfile文件為pod ‘PFBaseSDK’ ‘0.1.3’加袋,終端執(zhí)行pod install命令,集成0.1.3的PFBaseSDK抱既。

五职烧、相關(guān)參考:

https://guides.cocoapods.org/syntax/podfile.html

http://www.cocoachina.com/ios/20150228/11206.html

http://www.cnblogs.com/brycezhang/p/4117180.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市防泵,隨后出現(xiàn)的幾起案子蚀之,更是在濱河造成了極大的恐慌,老刑警劉巖捷泞,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件足删,死亡現(xiàn)場離奇詭異,居然都是意外死亡锁右,警方通過查閱死者的電腦和手機(jī)失受,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咏瑟,“玉大人拂到,你說我怎么就攤上這事÷肱ⅲ” “怎么了兄旬?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長余寥。 經(jīng)常有香客問我领铐,道長悯森,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任绪撵,我火速辦了婚禮呐馆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莲兢。我一直安慰自己汹来,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布改艇。 她就那樣靜靜地躺著收班,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谒兄。 梳的紋絲不亂的頭發(fā)上摔桦,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音承疲,去河邊找鬼邻耕。 笑死,一個胖子當(dāng)著我的面吹牛燕鸽,可吹牛的內(nèi)容都是我干的兄世。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼啊研,長吁一口氣:“原來是場噩夢啊……” “哼御滩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起党远,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤削解,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沟娱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氛驮,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年济似,在試婚紗的時候發(fā)現(xiàn)自己被綠了矫废。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡碱屁,死狀恐怖磷脯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娩脾,我是刑警寧澤赵誓,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響俩功,放射性物質(zhì)發(fā)生泄漏幻枉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一诡蜓、第九天 我趴在偏房一處隱蔽的房頂上張望熬甫。 院中可真熱鬧,春花似錦蔓罚、人聲如沸椿肩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郑象。三九已至,卻和暖如春茬末,著一層夾襖步出監(jiān)牢的瞬間厂榛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工丽惭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留击奶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓责掏,卻偏偏與公主長得像柜砾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拷橘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評論 2 350

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

  • 項(xiàng)目組件化局义、平臺化是技術(shù)公司的共同目標(biāo)喜爷,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件冗疮,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,630評論 0 39
  • /** 寫在前面,我是新手經(jīng)驗(yàn)和知識量還不夠檩帐,有些理解和解釋有bug术幔,我自己都不知道哈哈。辯證的看哦 **/ 來我...
    堅(jiān)一閱讀 11,794評論 2 10
  • 一. CocoaPods的介紹 什么是CocoaPods湃密?CocoaPods是一個負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫...
    輝712閱讀 3,918評論 0 7
  • 前言 前幾天發(fā)布我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時候诅挑。對Co...
    Dely閱讀 17,144評論 12 82
  • CocoaPods 是什么? CocoaPods 是一個負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫的工具泛源。CocoaPo...
    朝洋閱讀 25,665評論 3 51