CocoaPods是Objective-C和Swift項(xiàng)目的依賴(lài)管理工具,可以讓你高效優(yōu)雅地管理第三方框架(AFNetworking等)成肘。如果不使用CocoaPods,集成第三方框架需要把該框架的源碼復(fù)制到項(xiàng)目中匪傍;如果該框架依賴(lài)系統(tǒng)的framework笋敞,還需要手工將這些framework分別添加到項(xiàng)目中。某些開(kāi)源框架還需要設(shè)置-fno-objc-arc等編譯參數(shù)挪凑。如果要升級(jí)第三方框架孕索,還得重復(fù)這些操作。CocoaPods就是為避免這些費(fèi)時(shí)繁瑣的操作而生躏碳。
安裝CocoaPods
CocoaPods是由ruby構(gòu)建的搞旭。Mac OSX自帶ruby,可以使用ruby的gem命令下載安裝CocoaPods菇绵。ruby的軟件源在國(guó)內(nèi)不穩(wěn)定肄渗,可以將官方軟件源替換成國(guó)內(nèi)淘寶的:
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
如果ruby的gem命令版本太低,可能導(dǎo)致安裝失敗咬最。我是在v2.0.14版本操作的翎嫡,可通過(guò)下面的命令查看版本:
$ gem -v
發(fā)現(xiàn)版本太低,可通過(guò)以下命令更新gem:
$ gem update --system
確定gem的版本沒(méi)問(wèn)題永乌,通過(guò)以下命令安裝CocoaPods:
$ sudo gem install cocoapods
使用CocoaPods
在項(xiàng)目中使用CocoaPods
CocoaPods把每一個(gè)第三方依賴(lài)庫(kù)(框架)都視為一個(gè)pod惑申。安裝好了CocoaPods之后,在項(xiàng)目中應(yīng)用十分簡(jiǎn)便翅雏。在項(xiàng)目的根目錄創(chuàng)建名為Podfile的文件圈驼,可以執(zhí)行如下命令創(chuàng)建該文件:
#創(chuàng)建Podfile文件,用于描述相關(guān)信息
$ touch Podfile
在Podfile中添加描述望几,下面是示例:
platform :ios, '8.0'
pod 'AFNetworking', '~> 3.0'
pod 'SDWebImage', '~>3.7'
Podfile修改保存后绩脆,在項(xiàng)目根目錄執(zhí)行下面的命令:
#向項(xiàng)目添加CocoaPods
$ pod install
#如果想查看安裝過(guò)程的相關(guān)信息可以在”pod install“后追加”--verbose“,如下:
$ pod install --verbose
等待命令執(zhí)行完畢。
是的,CocoaPods就這樣設(shè)置好了靴迫。以后每次打開(kāi)項(xiàng)目使用后綴為xcworkspace的文件而不是xcodeproj祈坠。
很多人以為只在一開(kāi)始使用pod install
命令,之后都是用pod update
了矢劲。官方說(shuō)法是任何時(shí)候向項(xiàng)目添加新框架(pod)赦拘,都使用install命令,即便之前執(zhí)行過(guò)install命令了芬沉;只在更新pod的版本時(shí)使用update命令:更新所有pod使用pod update
躺同,更新指定pod時(shí)使用pod update [PODNAME]
。
刪除某個(gè)pod
在Podfile中刪除該pod的聲明丸逸,然后執(zhí)行pod update
命令即可蹋艺。
pod的版本管理
pod 'AFNetworking', '~> 3.0'
這個(gè)聲明告訴CocoaPods安裝從3.0到4.0之間(不包括4.0)所有版本中最新的那個(gè)。
- > 0.1 :所有大于0.1的版本黄刚。
- >= 0.1:所有大于或等于0.1的版本
- < 0.1: 所有小于0.1的版本捎谨。
- <= 0.1 : 所有小于或等于0.1的版本。
- ~> 0.1.2:等同于>= 0.1.2 且 < 0.2.0憔维,并選擇最新的版本涛救。
處理版本控制(git)
如果是團(tuán)隊(duì)開(kāi)發(fā),為了各成員項(xiàng)目中的pod保持版本一致业扒,應(yīng)該把CocoaPods哪些文件加入版本控制呢检吆?Podfile和Podfile.lock是必需的。把Pod文件夾加入版本控制程储,優(yōu)點(diǎn)是其他成員clone到該項(xiàng)目后可以不安裝CocoaPods直接構(gòu)建(builde)該項(xiàng)目蹭沛,缺點(diǎn)是這會(huì)增加git的工作量,而且repo的體積會(huì)增大章鲤。
相關(guān)文件說(shuō)明
Podfile:用于聲明你要添加的pod(框架)摊灭,可以根據(jù)個(gè)人喜好高度定制。更多信息败徊,請(qǐng)查閱Podfile指南帚呼。
Podspec:每個(gè)支持CocoaPods管理的框架(pod)都有自己的.podspec文件。該文件聲明一個(gè)框架怎樣添加到項(xiàng)目中集嵌。它起到列出源文件萝挤、framework、編譯參數(shù)(compiler flags)和該框架需要的依賴(lài)等作用根欧。CocoaPods正是根據(jù)各個(gè)框架中的.podspec文件來(lái)處理相關(guān)依賴(lài)的怜珍。
Podfile.lock:這是 CocoaPods 創(chuàng)建的最重要的文件之一。它記錄了需要被安裝的 pod 的每個(gè)已安裝的版本凤粗。如果你想知道已安裝的 pod 是哪個(gè)版本酥泛,可以查看這個(gè)文件今豆。推薦將 Podfile.lock 文件加入到版本控制中,這有助于整個(gè)團(tuán)隊(duì)的一致性柔袁。