2018-11-13

iOS開發(fā) - CocoaPods的常見使用方式

https://www.cnblogs.com/hs-funky/p/6759977.html


1 CocoaPods?的安裝

1.1?作用:

幫助管理和維護(hù)第三方框架,快速的搜索到第三方框架, 然后自動(dòng)集成到工程里面來, 并編譯成一個(gè)libPod.a的靜態(tài)庫給我們項(xiàng)目用

1.2?理解:

1.2.1 什么是gem

Gem是一個(gè)管理Ruby庫和程序的標(biāo)準(zhǔn)包腾仅,它通過Ruby Gem(如 http://rubygems.org/ )源來查找疼鸟、安裝肠缔、升級(jí)和卸載軟件包意述,非常的便捷规伐。

1.2.2 常用命令

$ gem --version?(查看gem版本)

$ gem update --system(更新gem)

$ gem sources(查看數(shù)據(jù)源)

$ gem sources --remove?https://rubygems.org/(刪除數(shù)據(jù)源)

$ gem sources -a?https://ruby.taobao.org/(添加數(shù)據(jù)源)

$ gem search 軟件包關(guān)鍵字(搜索軟件包)

$ gem install 軟件包名稱(安裝軟件包)

$ gem install cocoapods --pre(安裝上一個(gè)版本軟件包)

$ gem uninstall?軟件包名稱(卸載安裝包)

注意: 以上命令最好在使用之前, 都添加sudo,代表以管理員身份運(yùn)行該命令,因?yàn)橛锌赡馨惭b軟件包的過程當(dāng)中, 需要?jiǎng)?chuàng)建文件等等, 必須有管理員權(quán)限才能操作

1.3?安裝:

$ sudo gem install cocoapods

執(zhí)行完這句如果報(bào)告以下錯(cuò)誤:?

ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:?

Unable to download data from?https://rubygems.org/?- Errno::ETIMEDOUT: Operation timed out

connect(2) (https://rubygems.org/latest_specs.4.8.gz)

ERROR: Possible alternatives: cocoapods?

?則需要更新一下ruby的源?

$ gem sources??(查看當(dāng)前ruby的源)

$ gem sources --remove?https://rubygems.org/?(刪除數(shù)據(jù)源)

$ gem sources -a?https://ruby.taobao.org/?(添加數(shù)據(jù)源)

如果gem太老做盅,可以嘗試用如下命令升級(jí)gem?

$ sudo gem update --system(注解: sudo 是以超級(jí)管理員的身份操作)

升級(jí)成功后會(huì)提示: RubyGems system software updated?

然后重新執(zhí)行安裝下載命令?

$ sudo gem install cocoapods

驗(yàn)證成功:$ pod --version

接下來進(jìn)行安裝乖杠,執(zhí)行:?

$ pod setup

升級(jí)到10.11, CocoaPods報(bào)錯(cuò): command not found, 解決方案

$ sudo gem update --system

$ sudo gem uninstall cocoapods

$ sudo gem install -n /usr/local/bin cocoapods

隨后如果出現(xiàn)下列錯(cuò)誤

[!]?An?error?occurred?while?performing?`Git?pull`?on?repo?`master`.

[!]?/usr/bin/git?pull?--ff-only

原因:?Cocoapods的分支不支持當(dāng)前最新的Xcode版本

解決辦法:?刪除master分支?重新建立新的分支

$ sudo?rm?-fr?~/.cocoapods/repos/master

$?pod?setup


2 CocoaPods?的簡(jiǎn)單使用

2.1?步驟

1>?Xcode新建一個(gè)項(xiàng)目分扎,名字Test

2> 終端中,cd到項(xiàng)目總目錄(注意:包含Test.xcodeproj的那個(gè)目錄)

3> 執(zhí)行命令?$ pod init?建立Podfile配置文件

4> 打開podfile文件胧洒,不要選擇文本編輯打開方式畏吓,選擇Xcode打開,編輯文件如下

5> 執(zhí)行?$ pod install?現(xiàn)在打開項(xiàng)目不是點(diǎn)擊 Test.xcodeproj了卫漫,而是點(diǎn)擊 Test.xcworkspace

2.2?說明

生成的重要文件Podfile.lock 用來記錄著上一次下載的框架版本

2.3 pod install 和 pod update 區(qū)別

install? 如果Podfile.lock文件存在, 直接從此文件中讀取框架信息下載安裝,如果不存在, 依然會(huì)讀取Podfile文件內(nèi)的框架信息

update 不管Podfile.lock是否存在, 都會(huì)讀取Podfile文件的的框架信息去下載

主要區(qū)別在于, Podfile文件內(nèi)的框架信息, 版本描述沒有指定具體版本


3?上傳框架到CocoaPods

3.1 CocoaPods機(jī)制圖解

?

3.2?上傳框架到CocoaPods

1> 創(chuàng)建庫工程, 添加源文件到Classes文件夾,文件路徑 /test/Classes/Person.h?Person.m文件

2> 在遠(yuǎn)程github上創(chuàng)建倉庫用來存放此庫工程


3> 創(chuàng)建git并與遠(yuǎn)程倉庫進(jìn)行關(guān)聯(lián)

$ cd /Users/Funky/Desktop/test

$ git init(創(chuàng)建git)

$ git add .(添加到暫存區(qū))

$ git commit -m 'create Person Class’?(提交文件)

$ git remote add origin?https://github.com/funkyHS/testPerson.git?(關(guān)聯(lián)遠(yuǎn)程地址)

$ git push origin master?(提交推送到遠(yuǎn)程)

4> 創(chuàng)建倉庫的描述文件test.podspec

$ cd /Users/Funky/Desktop/test

$ pod spec create test(創(chuàng)建spec文件)

生成test.podspec 使用Xcode打開進(jìn)行編輯

$ git tag?(查看tag記錄)

$ git tag ‘0.0.1’?(要與test.podspec中的s.version保持一致)

$ git push --tags(提交推送到遠(yuǎn)程菲饼,成功后在遠(yuǎn)程release處可以看到提交的tag版本)

5>? 利用trunk將本地的spec文件上傳到pods官方的索引庫

$ pod trunk register 1824718008@qq.com 'funky'? --verbose?(注冊(cè)trunk)

成功后登陸上面的郵箱去激活 郵件中的地址

$ pod trunk push test.podspec

6> 測(cè)試,使用pod search 命令搜索自己的框架, 如果可以搜索到, 那么代表審核通過了


4 ?CocoaPods本地私有庫的使用

需求說明:testProject工程利用pods管理導(dǎo)入使用本地庫文件

4.1 步驟:

$ cd /Users/Funky/Desktop/localLib/test

$ git init

$ git add .

$ git commit -m 'create file’

$ pod spec create test

編輯test.podspec文件

$ cd /Users/Funky/Desktop/testProject

$ pod init(生成Podfile文件)

編輯Podfile文件

$ pod install?(會(huì)驗(yàn)證test.podspec 填寫信息是否正確)

成功后打開testProject.xcworkspace項(xiàng)目,庫文件在Pods/Development Pods中


5?創(chuàng)建pods庫的模版庫

(組件化快速生成測(cè)試工程常用)

工程文件目錄結(jié)構(gòu):/Users/Funky/Desktop/MyTestProject/testProject/Classes/Categories/(.h .m)

需求:在MyTestProject文件夾下列赎,快速創(chuàng)建關(guān)于Categories/(.h .m)的測(cè)試工程

5.1 步驟:

1> $ cd /Users/Funky/Desktop/MyTestProject

2> $ pod lib create testProjectQuick

3> 用測(cè)試的庫文件替換ReplaceMe.m文件

---------------------------------------------

4>?$ cd /Users/Funky/Desktop/MyTestProject/testProjectQuick/Example

$ pod install


6 CocoaPods遠(yuǎn)程私有庫的使用

6.1?機(jī)制圖解

?

6.2?具體操作步驟

1> 查看本地索引庫

$ pod repo

master

- Type: git (master)

- URL:? https://github.com/CocoaPods/Specs.git

-?Path: /Users/Funky/.cocoapods/repos/master

2> 在代碼托管平臺(tái)上添加公鑰

$ ssh-keygen(生成公鑰)

Enter file in which to save the key (/Users/Funky/.ssh/id_rsa): (直接回車)

Enter passphrase (empty for no passphrase): (直接回車)

Enter same passphrase again: (直接回車)

生成的公鑰所在路徑 ~/.ssh/id_rsa.pub (用Xcode打開并復(fù)制)

在coding上添加公鑰

3> 添加本地私有的索引庫

$ pod repo add TestProjectBase?git@git.coding.net:funkyHS/TestProjectSpecs.git

此時(shí)在~/.cocoapods/repos 路徑下 可以看到TestProjectBase文件夾

4> 查看?$ pod repo

master

- Type: git (master)

- URL:? https://github.com/CocoaPods/Specs.git

- Path: /Users/Funky/.cocoapods/repos/master

TestProjectBase

- Type: git (master)

- URL:? git@git.coding.net:funkyHS/TestProjectSpecs.git

- Path: /Users/Funky/.cocoapods/repos/TestProjectBase

5> 然后在代碼托管平臺(tái)上(coding)創(chuàng)建一個(gè)TestProjectBase項(xiàng)目宏悦,用來存放基礎(chǔ)組件的遠(yuǎn)程代碼倉庫

$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/testProjectQuick?(進(jìn)入到基礎(chǔ)組件的模版工程)

$ git status

$ git add .

$ git commit -m ‘模版測(cè)試工程'

6> 接著 修改編輯testProjectQuick 模版例子工程的testProjectQuick.podspec文件

$ pod lib lint?(驗(yàn)證當(dāng)前文件夾下的testProjectQuick.podspec文件編輯是否正確)

$ pod spec lint?(驗(yàn)證遠(yuǎn)程的是否正確,此時(shí)會(huì)報(bào)tag ERROR)

$ git status

$ git add .

$ git commit -m '編輯spec文件'

$ git remote add origin?https://git.coding.net/funkyHS/TestProjectBase.git?(將本地庫與遠(yuǎn)程代碼倉庫進(jìn)行關(guān)聯(lián))

$ git push origin master?(提交到遠(yuǎn)程倉庫)

$ git tag ‘0.1.0'

$ git push --tags?(將標(biāo)簽提交到遠(yuǎn)程)

$ pod spec lint?(再次驗(yàn)證)

testProjectQuick.podspec passed validation.


$ pod repo push TestProjectBase testProjectQuick.podspec?(將podspec文件提交到本地的私有索引庫TestProjectBase中: 地址 ~/.cocoapods/repos/TestProjectBase)

注意:提交后粥谬,依然會(huì)驗(yàn)證 podspec文件肛根,驗(yàn)證通過后 會(huì)自動(dòng)上傳到在coding上的遠(yuǎn)程spec索引庫

$ pod search testProjectQuick

-> testProjectQuick (0.1.0)

?? testProjectQuick簡(jiǎn)介

?? pod 'testProjectQuick', '~> 0.1.0'

?? - Homepage: https://coding.net/u/funkyHS/p/TestProjectBase

?? - Source: ? https://git.coding.net/funkyHS/TestProjectBase.git

?? - Versions: 0.1.0 [TestProjectBase repo]

此時(shí)在進(jìn)入主工程中修改podfile文件

$ cd /Users/Funky/Desktop/遠(yuǎn)程私有庫/MyMainProject?

$ pod install

大功告成,打開MyMainProject.xcworkspace漏策,此時(shí)在pod中可以找到遠(yuǎn)程私有庫的代碼部凑!是不是很開心帮碰,很興奮雕沉!


如果對(duì)于如何創(chuàng)建遠(yuǎn)程私有庫還有不明白的地方蛔钙,去看我的下一篇詳細(xì)介紹的文章《iOS開發(fā) - CocoaPods遠(yuǎn)程私有庫從0到1

這篇文章對(duì)你有所幫助的話,請(qǐng)?jiān)谖业脑u(píng)論區(qū)坐一坐吧感耙!

有不理解或者發(fā)現(xiàn)博主存在理解操作不正確的地方褂乍,歡迎評(píng)論,我會(huì)及時(shí)修正即硼,以免誤人子弟逃片!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市只酥,隨后出現(xiàn)的幾起案子褥实,更是在濱河造成了極大的恐慌呀狼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件损离,死亡現(xiàn)場(chǎng)離奇詭異哥艇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)僻澎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門貌踏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窟勃,你說我怎么就攤上這事祖乳。” “怎么了拳恋?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵凡资,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我谬运,道長(zhǎng),這世上最難降的妖魔是什么垦藏? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任梆暖,我火速辦了婚禮,結(jié)果婚禮上掂骏,老公的妹妹穿的比我還像新娘轰驳。我一直安慰自己,他們只是感情好弟灼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布级解。 她就那樣靜靜地躺著,像睡著了一般田绑。 火紅的嫁衣襯著肌膚如雪勤哗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天掩驱,我揣著相機(jī)與錄音芒划,去河邊找鬼。 笑死欧穴,一個(gè)胖子當(dāng)著我的面吹牛民逼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涮帘,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼拼苍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了调缨?” 一聲冷哼從身側(cè)響起疮鲫,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤苟鸯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棚点,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體早处,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年瘫析,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砌梆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贬循,死狀恐怖咸包,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杖虾,我是刑警寧澤烂瘫,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站奇适,受9級(jí)特大地震影響坟比,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚷往,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一葛账、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皮仁,春花似錦籍琳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至势誊,卻和暖如春呜达,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背键科。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工闻丑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勋颖。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓嗦嗡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親饭玲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侥祭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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