iOS開發之cocoapods使用筆記

其實之前就用過cocoapods,也在網上找了相關的教程,用的還好,后來就棄用了,因為合作開發,有的人不喜歡用這個。
現在來到新的公司,因為是新項目,所以我就打算重新拾起cocoapods,但是我居然又去查資料,也是醉了。所以為了以后不干這么豬的事情。打算記下來以后勤看看,別再做同樣浪費感情的事情。
好了廢話不多說直接上教程(ps:對于一個一點都沒有接觸過cocoapodse的iOS dev來說本教程同樣適用)。

1.前言

當你開發iOS應用時,會經常使用到很多第三方開源類庫,比如JSONKit,AFNetWorking等等。可能某個類庫又用到其他類庫,所以要使用它,必須得另外下載其他類庫,而其他類庫又用到其他類庫,“子子孫孫無窮盡也”,這也許是比較特殊的情況。總之小編的意思就是,手動一個個去下載所需類庫十分麻煩。另外一種常見情況是,你項目中用到的類庫有更新,你必須得重新下載新版本,重新加入到項目中,十分麻煩。如果能有什么工具能解決這些惱人的問題,那將“善莫大焉”。所以,你需要 CocoaPods。
CocoaPods應該是iOS最常用最有名的類庫管理工具了,上述兩個煩人的問題,通過cocoaPods,只需要一行命令就可以完全解決,當然前提是你必須正確設置它。重要的是,絕大部分有名的開源類庫,都支持CocoaPods。所以,作為iOS程序員的我們,掌握CocoaPods的使用是必不可少的基本技能了
現在的mac安裝了Xcode已經自帶了Ruby環境
國內的話因為那堵墻所以
我們用淘寶的Ruby鏡像來訪問cocoapods。按照下面的順序在終端中敲入依次敲入命令:

gem sources --remove https://rubygems.org/
//等有反應之后再敲入以下命令
gem sources -a https://ruby.taobao.org/

為了驗證你的Ruby鏡像是并且僅是taobao,可以用以下命令查看:

gem sources -l

只有在終端中出現下面文字才表明你上面的命令是成功的:

*** CURRENT SOURCES ***

https://ruby.taobao.org/

出現上面的這兩行代碼之后執行

sudo gem install cocoapods

等上十幾秒鐘,CocoaPods就可以在你本地下載并且安裝好了,不再需要其他設置。
敲入以上命令時,小編終端上是這個樣子的(由于太長,僅截取前面一部分):


看到這里,你心里會不會說,我靠!太爽了,這么容易就可以下載并且安裝好了!是的,小編也是這么想的。CocoPods就是這么簡單,使用也十分簡單。繼續往下看吧。

2.使用

以AFNetworking為例進行使用的介紹
在終端上執行如下代碼來查看AFNetworking的各個版本

pod search AFNetworking

這說明,AFNetworking是支持CocoaPods,所以我們可以利用CocoaPods將AFNetworking導入你的項目中。
首先,我們需要在我們的項目中加入CocoaPods的支持
在終端中進入(cd命令)你項目所在目錄,然后在當前目錄下,利用vim創建Podfile,運行:

vim Podfile```
然后在Podfile文件中輸入以下文字:

platform :ios, '7.0'//當前AFNetworking支持的iOS最高版本是iOS 7.0(可以不寫)
pod "AFNetworking", "~> 2.0"http://要下載的AFNetworking版本是2.0,這里用來版本控制,假如你不想下載最新版本的庫,可以在這里輸入你想要的版本,不寫的話默認是最新版本```
然后保存退出。vim環境下,保存退出命令是:
先按esc 然后輸入

:wq```
這時候,你會發現你的項目目錄中,出現一個名字為Podfile的文件,而且文件內容就是你剛剛輸入的內容。注意,Podfile文件應該和你的工程文件.xcodeproj在同一個目錄下。
這時候,你就可以利用CocoPods下載AFNetworking類庫了。還是在終端中的當前項目目錄下,運行以下命令
這時候要記住一點一定要關掉你的工程文件,然后再終端上執行如下代碼:

pod install```
注意:以后打開項目就用 CocoaPodsDemo.xcworkspace(也就是你工程目錄里面新出來的那個工程文件) 打開,而不是之前的.xcodeproj文件。
你也許會郁悶,為什么會出現.xcodeproj文件呢。這正是你剛剛運行$ pod install命令產生的新文件。除了這個文件,你會發現還多了另外一個文件“Podfile.lock”和一個文件夾“Pods”。 點擊 CocoaPodsDemo.xcworkspace 打開之后工程之后,項目Xcode目錄結構如下圖:



你會驚喜地發現,AFNetwoking已經成功導入項目了(紅框部分)!

網上的教程大都寫到這里就沒有了,但是好多人就會有疑問:怎么刪除第三方庫呢,這就要用到之前的Podfile了,我這里介紹一個最簡單的方法:
打開你的工程你會發現你的工程了多了一個Podfile,打開這個文件,然后你會看見很熟悉的代碼:

platform :ios, '7.0'//當前AFNetworking支持的iOS最高版本是iOS 7.0(可以不寫)
pod "AFNetworking", "~> 2.0"http://要下載的AFNetworking版本是2.0,這里用來版本控制,假如你不想下載最新版本的庫,可以在這里輸入你想要的版本,不寫的話默認是最新版本```
將```
pod "AFNetworking", "~> 2.0"```刪掉然后在終端執行

pod install

再打開工程你就會發現之前你添加的第三方庫成功刪除了。
如果你想在用cocoapods添加MJRfresh,就在這里添加 ```pod "MJRfresh"```

獲取查找相應的版本可以寫在這里,進行版本控制,不想寫的話就是獲取最新版本的庫。
###3.引用
當你在項目文件中引入AFNetworking.h的時候,這時候如果你發現import的時候沒有提示AFNetworking的文件,可以在target-Build Settings下修改“User Header Search Paths”項,新增${SRCROOT}并選擇rcursive,如下圖。

![](http://upload-images.jianshu.io/upload_images/701353-dfd9e8d99ac7d747.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
再次嘗試一下引用,是不是很開心哈哈!
###4.總結
其實好多東西要去敢于嘗試,不嘗試永遠不知道自己到底會不會,自己的能力能夠達到什么程度,懷著一顆好奇心,一步一步的探索,你會感受到其中的樂趣的。
###5.更新
最近在使用cocoaPods的時候,老是出現Updating local specs repositories的情況,一直等待著下載,就是不見有反應,后來發現是使用命令pod install被墻了,在網上查找到了新的命令pod install --verbose --no-repo-update,特此記錄下來,方便以后使用。
今天使用過程中又出現了問題
![](http://upload-images.jianshu.io/upload_images/701353-f8a2bdb0648c2506.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
說是找不到AFNetworking,看到這我就懵逼了,我又把cocoapods下載的AFNetworking庫文件全部復制到另一個工程,我擦居然什么問題都沒有。然后我就各種找問題,最后發現了端倪,原來使用cocoapods要在進行設置添加庫

![](http://upload-images.jianshu.io/upload_images/701353-fec00b6d863fdbee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
我都有點想放棄cocoapods了,媽蛋的。
這幾天又遇到了這個 問題,但是查了各種資料發現

import <AFNetworking/AFNetworking.h>//或者

import <AFNetworking.h>

如果我沒記錯的話,換用<>是可以在頭文件引用的原因的話,是因為項目文件的組織方式不同cocoapod是以target為目標設置依賴的所以,cocoapod引用的庫類似于framework說簡單一點,“”是在同文件夾內而<>可以跨引用庫,也就是范圍更大具體的編譯原理我不太清楚,你可以朝著這個方向去查*****br />當然,前提是<>能夠在頭文件引用成功。
 歡迎關注我的[微博](http://dwz.cn/Smallwolf)和[博客](http://blog.sina.com.cn/u/2209572342)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容

  • CocoaPods是什么? 當你開發iOS應用時,會經常使用到很多第三方開源類庫,比如JSONKit,AFNetW...
    songjk閱讀 1,406評論 0 0
  • 那日在電視上,得知巨峰第九屆開幕了。 心動,不如行動,2月26日走起,賞花去。 到了春天,春光乍泄,滿目桃紅柳綠...
    映卿閱讀 251評論 0 1
  • 這一節主要是介紹react-navigation的StackNavigator,我當前使用的版本是1.0.0-be...
    mymdeep閱讀 1,409評論 2 3
  • 小T是我大學畢業后第一份工作單位的同事。內蒙人,長的憨厚,皮膚有點黑,也有點糙,五大三粗的,說起話來卻柔聲細語。 ...
    寶木蘇閱讀 590評論 0 4