1. CocoaPods簡介
CocoaPods是一個(gè)用來幫助我們管理iOS第三方依賴庫的工具今阳。它可以解決庫與庫之間的依賴關(guān)系,目的是讓我們能自動化的、集中的狼速、直觀的管理第三方開源庫鬓催。
CocoaPods的安裝和使用
CocoaPods是用Ruby實(shí)現(xiàn)的,要想使用它首先需要有Ruby的環(huán)境粤策。幸運(yùn)的是OS X系統(tǒng)默認(rèn)的已經(jīng)可以運(yùn)行Ruby了,因此我們只需要執(zhí)行以下命令:
$ sudo gem install cocoapods
$ pod setup
① 執(zhí)行完install命令半天沒反應(yīng)
原因是Ruby的默認(rèn)源使用的是cocoapods.org误窖,國內(nèi)訪問這個(gè)網(wǎng)址有時(shí)候會有問題叮盘,請?zhí)鎿Q成Ruby China的源,命令如下:
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://gems.ruby-china.org/
要想驗(yàn)證是否替換成功了霹俺,可以執(zhí)行:
$ gem sources -l
正常的輸出是:
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
② gem版本過老
gem是管理Ruby庫和程序的標(biāo)準(zhǔn)包柔吼,如果它的版本過低也可能導(dǎo)致安裝失敗,解決方案自然是升級gem丙唧,執(zhí)行下述命令即可:
$ sudo gem update --system
③ pod setup等待時(shí)間太久
pod setup在執(zhí)行時(shí)愈魏,CocoaPods會將托管在https://github.com/CocoaPods/Specs上面的所有項(xiàng)目的Podspec文件更新到~/.cocoapods/目錄下,這個(gè)文件很大艇棕,所有第一次更新會非常慢蝌戒。方法是直接手動下載到本地,操作如下:
$ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master --progress
使用
<span id = "jump"></span>
創(chuàng)建Podfile文件
在Xcode項(xiàng)目的根目錄下執(zhí)行命令創(chuàng)建Podfile文件,操作如下:
$ pod init
Podfile文件的格式如下:
source 'https://github.com/CocoaPods/Specs' #源的下載地址
platform :ios, '7.0' #支持的ios系統(tǒng)最低版本
pod 'JSONKit', '~> 1.4' #第三方庫以及版本號
target 'XBPodSDK' do #項(xiàng)目的target
# use_frameworks!
end
上面的格式比較簡單沼琉,查看更多詳情北苟,請?zhí)D(zhuǎn)到鏈接Podfile介紹
<font color=red>注意:Podfile文件中加入“use_frameworks!”表示打包成framework動態(tài)庫(ios8之前是靜態(tài)庫),如果沒有這個(gè)配置打瘪,則最終打包成.a靜態(tài)庫</font>
安裝依賴庫
Podfile文件創(chuàng)建完成后友鼻,在當(dāng)前的工程目錄下,執(zhí)行命令來安裝依賴庫:
$ pod install
<font color=red>注意:使用CocoaPods生成的.xcworkspace文件來打開工程</font>
更新依賴庫
當(dāng)依賴的第三方庫升級新版本后闺骚,如果Podfile文件指定庫為最新版本或者不指定版本彩扔,都會更新到最新版。
① 全部更新
如果要使Podfile文件中所有的庫都更新到指定版本,需要執(zhí)行命令如下:
$ pod update
<font color=red>注意:用“~>”指定的版本是一個(gè)范圍僻爽,并不是特定版本虫碉,所有會產(chǎn)生誤解(自己指定了版本,為什么pod update會更新到更高的版本)胸梆。為了防止這種情況敦捧,可以使用“<=”來指定版本。</font>
直接執(zhí)行pod update命令碰镜,有時(shí)會比較慢兢卵,這是因?yàn)閜od會更新本地的版本庫,添加參數(shù)可以取消更新版本庫绪颖,如下:
$ pod update --no-repo-update
<font color=red>注意:這種情況需要保證本地版本庫最新秽荤。</font>
② 更新指定庫
如果想只更新某個(gè)依賴庫,可以在pod update后面加上庫名,如下:
$ pod update [LIB_NAME] #庫的名稱
查找第三方庫
如果不知道cocoaPods管理的庫中窃款,是否有想要的庫课兄,可以通過<font color=red>pod search</font>命令進(jìn)行查找,以下是用<font color=red>pod search json</font>查找到的所有可用的庫:
-> JSON (5.0.0)
JSON made so simple, it hurts
pod 'JSON', '~> 5.0.0'
- Homepage: https://github.com/3lvis/JSON
- Source: https://github.com/3lvis/JSON.git
- Versions: 5.0.0, 5.0.0-beta1, 4.0.2, 4.0.1, 4.0.0, 3.1.0, 3.0.0, 2.1.1, 2.1.0, 2.0.0 [master repo]
-> json-parser-swift (0.2.0)
JSON parser & tokenizer in pure Swift
pod 'json-parser-swift', '~> 0.2.0'
- Homepage: https://github.com/webconnex/json-parser-swift
- Source: https://github.com/webconnex/json-parser-swift.git
- Versions: 0.2.0, 0.1.1, 0.1.0, 0.0.2, 0.0.1 [master repo]
//... 以下省略若干行
Podfile.lock作用
在開始使用CocoaPods雁乡,執(zhí)行完pod install之后第喳,會生成一個(gè)Podfile.lock文件,每次執(zhí)行pod update也會更新Podfile.lock文件。
作用
Podfile.lock文件最大得用處在于多人開發(fā)踱稍,保證團(tuán)隊(duì)中每個(gè)人使用的依賴庫的版本一致
CocoaPods管理私有庫
創(chuàng)建私有 Spec Repo
Spec Repo介紹
Spec Repo是所有的Pods的一個(gè)索引,就是一個(gè)容器悠抹,所有公開的Pods都在這個(gè)里面珠月,它實(shí)際是一個(gè)遠(yuǎn)端的Git倉庫,當(dāng)你使用了Cocoapods后它會被clone到本地的~/.cocoapods/repos目錄下楔敌,可以進(jìn)入到這個(gè)目錄看到master文件夾就是這個(gè)官方的Spec Repo了啤挎。這個(gè)master目錄的結(jié)構(gòu)是這個(gè)樣子的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec