1. CocoaPods簡(jiǎn)介
CocoaPods是一個(gè)用來(lái)幫助我們管理iOS第三方依賴庫(kù)的工具。它可以解決庫(kù)與庫(kù)之間的依賴關(guān)系,目的是讓我們能自動(dòng)化的、集中的、直觀的管理第三方開源庫(kù)。
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,國(guó)內(nèi)訪問(wèn)這個(gè)網(wǎng)址有時(shí)候會(huì)有問(wèn)題,請(qǐng)?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版本過(guò)老
gem是管理Ruby庫(kù)和程序的標(biāo)準(zhǔn)包,如果它的版本過(guò)低也可能導(dǎo)致安裝失敗,解決方案自然是升級(jí)gem,執(zhí)行下述命令即可:
$ sudo gem update --system
③ pod setup等待時(shí)間太久
pod setup在執(zhí)行時(shí),CocoaPods會(huì)將托管在https://github.com/CocoaPods/Specs上面的所有項(xiàng)目的Podspec文件更新到~/.cocoapods/目錄下,這個(gè)文件很大,所有第一次更新會(huì)非常慢。方法是直接手動(dòng)下載到本地,操作如下:
$ 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' #第三方庫(kù)以及版本號(hào)
target 'XBPodSDK' do #項(xiàng)目的target
# use_frameworks!
end
上面的格式比較簡(jiǎn)單,查看更多詳情,請(qǐng)?zhí)D(zhuǎn)到鏈接Podfile介紹
<font color=red>注意:Podfile文件中加入“use_frameworks!”表示打包成framework動(dòng)態(tài)庫(kù)(ios8之前是靜態(tài)庫(kù)),如果沒有這個(gè)配置,則最終打包成.a靜態(tài)庫(kù)</font>
安裝依賴庫(kù)
Podfile文件創(chuàng)建完成后,在當(dāng)前的工程目錄下,執(zhí)行命令來(lái)安裝依賴庫(kù):
$ pod install
<font color=red>注意:使用CocoaPods生成的.xcworkspace文件來(lái)打開工程</font>
更新依賴庫(kù)
當(dāng)依賴的第三方庫(kù)升級(jí)新版本后,如果Podfile文件指定庫(kù)為最新版本或者不指定版本,都會(huì)更新到最新版。
① 全部更新
如果要使Podfile文件中所有的庫(kù)都更新到指定版本,需要執(zhí)行命令如下:
$ pod update
<font color=red>注意:用“~>”指定的版本是一個(gè)范圍,并不是特定版本,所有會(huì)產(chǎn)生誤解(自己指定了版本,為什么pod update會(huì)更新到更高的版本)。為了防止這種情況,可以使用“<=”來(lái)指定版本。</font>
直接執(zhí)行pod update命令,有時(shí)會(huì)比較慢,這是因?yàn)閜od會(huì)更新本地的版本庫(kù),添加參數(shù)可以取消更新版本庫(kù),如下:
$ pod update --no-repo-update
<font color=red>注意:這種情況需要保證本地版本庫(kù)最新。</font>
② 更新指定庫(kù)
如果想只更新某個(gè)依賴庫(kù),可以在pod update后面加上庫(kù)名,如下:
$ pod update [LIB_NAME] #庫(kù)的名稱
查找第三方庫(kù)
如果不知道cocoaPods管理的庫(kù)中,是否有想要的庫(kù),可以通過(guò)<font color=red>pod search</font>命令進(jìn)行查找,以下是用<font color=red>pod search json</font>查找到的所有可用的庫(kù):
-> 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之后,會(huì)生成一個(gè)Podfile.lock文件,每次執(zhí)行pod update也會(huì)更新Podfile.lock文件。
作用
Podfile.lock文件最大得用處在于多人開發(fā),保證團(tuán)隊(duì)中每個(gè)人使用的依賴庫(kù)的版本一致
CocoaPods管理私有庫(kù)
創(chuàng)建私有 Spec Repo
Spec Repo介紹
Spec Repo是所有的Pods的一個(gè)索引,就是一個(gè)容器,所有公開的Pods都在這個(gè)里面,它實(shí)際是一個(gè)遠(yuǎn)端的Git倉(cāng)庫(kù),當(dāng)你使用了Cocoapods后它會(huì)被clone到本地的~/.cocoapods/repos目錄下,可以進(jìn)入到這個(gè)目錄看到master文件夾就是這個(gè)官方的Spec Repo了。這個(gè)master目錄的結(jié)構(gòu)是這個(gè)樣子的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec