CocoaPods 是什么?
CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫(kù)的工具。CocoaPods 的項(xiàng)目源碼在 GitHub( https://github.com/CocoaPods )上管理。
開發(fā) iOS 項(xiàng)目不可避免地要使用第三方開源庫(kù),在使用第三方庫(kù)時(shí),除了需要導(dǎo)入源碼,集成這些依賴庫(kù)還需要我們手動(dòng)去配置,還有當(dāng)這些第三方庫(kù)發(fā)生了更新時(shí),還需要手動(dòng)去更新項(xiàng)目,這就顯得非常麻煩。
而 CocoaPods 的出現(xiàn)使得我們可以節(jié)省設(shè)置和更新第三方開源庫(kù)的時(shí)間,通過(guò) CocoaPods,我們可以將第三方的依賴庫(kù)統(tǒng)一管理起來(lái),配置和更新只需要通過(guò)簡(jiǎn)單的幾行命令即可完成。
為什么要使用 CocoaPods?
在使用 CocoaPods 之前,開發(fā)項(xiàng)目需要用到第三方開源庫(kù)的時(shí)候,我們需要:
把開源庫(kù)的源代碼復(fù)制到項(xiàng)目中
添加一些依賴框架和動(dòng)態(tài)庫(kù)
設(shè)置 -Objc,-fno-objc-arc 等參數(shù)
管理它們的更新
在使用 CocoaPods 之后,我們只需要把用到的開源庫(kù)放到一個(gè)名為 Podfile 的文件中,然后執(zhí)行 pod update 就可以了,CocoaPods 就會(huì)自動(dòng)將這些第三方開源庫(kù)的源碼下載下來(lái),并且為我們的工程設(shè)置好相應(yīng)的系統(tǒng)依賴和編譯參數(shù)。
CocoaPods 的原理
CocoaPods 的原理是將所有的依賴庫(kù)都放到另一個(gè)名為 Pods 的項(xiàng)目中,然后讓主項(xiàng)目依賴 Pods 項(xiàng)目,這樣就把源碼管理工作從主項(xiàng)目移到了 Pods 項(xiàng)目中。
-
第三方庫(kù)會(huì)被編譯成 .a 靜態(tài)庫(kù)或者 .framwork 的動(dòng)態(tài)鏈接庫(kù)供我們真正的工程使用。
CocoaPods 會(huì)將所有的第三方庫(kù)以 target 的方式組成一個(gè)名為 Pods 的工程,該工程就放在剛才新生成的 Pods 目錄下。整個(gè)第三方庫(kù)工程會(huì)生成一個(gè)名稱為 libPods.a 的靜態(tài)庫(kù)供我們的工程使用。
對(duì)于資源文件,CocoaPods 提供了一個(gè)名為 Pods-resources.sh 的 bash 腳本,該腳本在項(xiàng)目每次編譯的時(shí)候都會(huì)執(zhí)行,將第三方庫(kù)的各種資源文件復(fù)制到目標(biāo)目錄中。
原來(lái)的工程設(shè)置已經(jīng)被更改了,這時(shí)候我們直接打開原來(lái)的工程文件去編譯就會(huì)報(bào)錯(cuò)。我們的工程和第三方庫(kù)所在的 Pods 工程會(huì)被以一個(gè)新生成的 workspace 的形式組織和管理,方便我們直觀的管理工程和第三方庫(kù)。
CocoaPods 通過(guò)一個(gè)名為 Pods.xcconfig 的文件來(lái)在編譯時(shí)設(shè)置所有的依賴和參數(shù)。
CocoaPods 的核心組件
CocoaPods 是用 Ruby 寫的,并劃分成了若干個(gè) Gem 包。
與 CocoaPods 相關(guān)的兩個(gè)目錄:
~/.CocoaPods/repos/:這個(gè)目錄存儲(chǔ)遠(yuǎn)端的 podspec 文件到本地。master 是所有第三方的 podspec 索引文件。其它的是我們自定義的 podspec 索引文件。~/Library/Caches/CocoaPods/:這個(gè)目錄就是緩存文件的存儲(chǔ)目錄。
CocoaPods 在解析執(zhí)行過(guò)程中最重要的幾個(gè)包的路徑分別是:CocoaPods/CocoaPods、CocoaPods/Core 和 CocoaPods/Xcodeproj。
CocoaPods/CocoaPods:這是面向用戶的組件,每當(dāng)執(zhí)行一個(gè) pod 命令時(shí),這個(gè)組件將被激活。它包括了所有實(shí)用 CocoaPods 的功能,并且還能調(diào)用其它 Gem 包來(lái)執(zhí)行任務(wù)。
-
CocoaPods/Core:Core Gem 提供了與 CocoaPods 相關(guān)的文件(主要是 Podfile 和 Podspecs)的處理。
Podfile:該文件用于配置項(xiàng)目所需要的第三方庫(kù),它可以被高度定制。
Podspecs:該文件描述了一個(gè)庫(kù)將怎樣被添加進(jìn)工程中。.podspec 文件可以標(biāo)識(shí)該第三方庫(kù)所需要的源碼文件、依賴庫(kù)、編譯選項(xiàng),以及其他第三方庫(kù)需要的配置。
CocoaPods/Xcodeproj:這個(gè)包負(fù)責(zé)處理工程文件,它能創(chuàng)建以及修改 .xcodeproj 文件和 .xcworkspace 文件。它也可以作為一個(gè)獨(dú)立的包使用,當(dāng)你要編寫修改項(xiàng)目文件的腳本時(shí),可以考慮使用 CocoaPods/Xcodeproj。
CocoaPods 的安裝
替換源
CocoaPods 是基于 ruby ecosystem 的,需要 ruby 環(huán)境,使用 ruby 的 gem 命令。所以我們的系統(tǒng)要有 ruby 環(huán)境。而 Mac 系統(tǒng)默認(rèn)會(huì)安裝好 ruby 環(huán)境,可以在終端輸入 $gem sources -l 命令查看系統(tǒng) ruby 默認(rèn)源為 https://rubygems.org/,但這個(gè)源在國(guó)內(nèi)是訪問(wèn)不到的,所以需要更換 ruby 鏡像。
我們可以使用淘寶的源 https://ruby.taobao.org/,但是淘寶的源已經(jīng)不更新維護(hù)了,所以不建議使用淘寶的源,我們最好使用 ruby-china 的源 https://gems.ruby-china.org。
-
移除系統(tǒng) ruby 默認(rèn)源
$gem sources --remove https://rubygems.org/ -
使用新的源
$gem sources -a https://ruby.taobao.org/(淘寶的源,不建議使用)或
$gem source -a https://gems.ruby-china.org(源已改變:$gem source -a https://gems.ruby-china.com) -
驗(yàn)證是否替換成功
$gem sources -l如果結(jié)果如下圖,表明替換成功。
安裝 CocoaPods
-
選擇版本
安裝最新版本
$sudo gem install -n /usr/local/bin CocoaPods安裝指定版本
$sudo gem install -n /usr/local/bin CocoaPods -v 1.0.0安裝最新的 release beta 版本
$sudo gem install -n /usr/local/bin CocoaPods --pre -
安裝
$pod setuppod setup的作用:將所有第三方的 Podspec 索引文件更新到本地的 ~/.CocoaPods/repos 目錄下。所有的第三方開源庫(kù)的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs 管理,我們需要把這個(gè) Podspec 文件保存到本地,這樣才能使用命令pod search來(lái)搜索一個(gè)開源庫(kù)。如果沒有執(zhí)行過(guò)
pod setup,用戶根目錄 ~ 下是找不到 .CocoaPods/repos 目錄的,沒有創(chuàng)建這個(gè)目錄。如果執(zhí)行了
pod setup,但是命令沒有執(zhí)行成功,那么會(huì)創(chuàng)建 ~/.CocoaPods/repos 目錄,只不過(guò)目錄是空的。如果執(zhí)行了
pod setup,并且命令執(zhí)行成功,說(shuō)明把 GitHub 上的 Podsepc 文件更新到了本地,那么會(huì)創(chuàng)建 ~/.CocoaPods/repos 目錄,并且 repos 目錄里有一個(gè) master 目錄,這個(gè) master 目錄保存的就是 GitHub 上所有第三方開源庫(kù)的 Podspec 索引文件。
第一次執(zhí)行 pod setup 時(shí),這個(gè) GitHub 上的 Podspec 索引文件比較大,所以第一次更新時(shí)非常慢,要耐心等待,我們可以新建一個(gè)終端窗口,輸入以下命令來(lái)查看下載文件的大小。
-
進(jìn)入文件目錄
~/.CocoaPods$cd ~/.CocoaPods -
查看文件大小
$du -sh -
驗(yàn)證是否安裝成功以及是否是自己需要的版本
$pod --version
安裝過(guò)程常見錯(cuò)誤
-
Gem 版本過(guò)低
Failed to send stats: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert handshake failure可以在終端輸入以下命令:
-
查看 Gem 的版本號(hào)
$gem -v或者$gem --version -
升級(jí) Gem
$sudo gem update --system如果出現(xiàn)以下錯(cuò)誤:
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems則輸入以下命令來(lái)升級(jí) Gem:
$sudo gem update -n /usr/local/bin --system
Gem 介紹:
Gem 是一個(gè)管理 Ruby 庫(kù)和程序的標(biāo)準(zhǔn)包,它通過(guò) RubyGem(如 http://rubygems.org/ )源來(lái)查找、安裝、升級(jí)和卸載軟件包,非常的便捷。如果 Gem 的版本過(guò)低就會(huì)導(dǎo)致 CocoaPods 安裝失敗。
所有的 Gem 包會(huì)被安裝到
/[Ruby root]/lib/ruby/gems/[ver]/目錄下,其中包括了 cache、doc、gems、specifications 4 個(gè)目錄,cache 下放置下載的原生 Gem 包,gems 下則放置解壓過(guò)的 Gem 包。當(dāng)安裝過(guò)程中遇到問(wèn)題時(shí),可以進(jìn)入這些目錄,手動(dòng)刪除有問(wèn)題的 Gem 包,然后重新安裝。
一些常用的 Gem 命令:
查看 Gem 配置源:
$gem sources -lGem 添加配置源:
$gem sources -a 源的urlGem 刪除配置源:
$gem sources -r 源的url更新所有 Gem 包:
$gem update更新指定的 Gem 包:
$gem update [gemname](注意:此命令不會(huì)升級(jí)舊版本的包)更新 RubyGems 軟件:
$gem update --system清除所有 Gem 包舊版本,保留最新版本:
$gem cleanup查看 Gem 環(huán)境:
$gem environment從 Gem 源安裝 Gem 包:
$gem install [gemname]從本機(jī)安裝 Gem 包:
$gem install -l [gemname].gem安裝指定版本的 Gem 包:
$gem install [gemname] --version=[版本號(hào)]刪除指定的 Gem 包:
$gem uninstall [gemname](注意:此命令將刪除所有已安裝的版本)刪除某指定版本 Gem:
$gem uninstall [gemname] --version=[版本號(hào)]查看本機(jī)已安裝的所有 Gem 包:
$gem list --local -
-
Ruby 版本過(guò)低
ERROR: Error installing CocoaPods: activesupport requires Ruby version >= 2.2.2在終端輸入以下命令查看當(dāng)前 Ruby 版本:
$ruby -vRuby 是什么?
Ruby 是一種簡(jiǎn)單快捷的面向?qū)ο竽_本語(yǔ)言,主要用來(lái)實(shí)現(xiàn)一些自動(dòng)化腳本。由于 iOS 系統(tǒng)上沒有 Ruby 解釋器,所以它通常是在 Mac 系統(tǒng)上使用,在編譯前(絕非 app 運(yùn)行時(shí))進(jìn)行一些自動(dòng)化工作。CocoaPods 中的 podfile 其實(shí)就是一份 Ruby 代碼。
升級(jí) Ruby
-
升級(jí) Ruby 要首先安裝 RVM
RVM:Ruby Version Manager,Ruby 版本管理器,包括 Ruby 的版本管理和 Gem 庫(kù)管理(gemset)。
打開終端,執(zhí)行以下命令:
$curl -L get.rvm.io | bash -s stable期間需要輸入管理員密碼,然后會(huì)自動(dòng)通過(guò) Homebrew 安裝依賴包,等待一段時(shí)間后就可以成功安裝好 RVM。
如果出現(xiàn)以下錯(cuò)誤:
Error running 'requirements_osx_port_libs_install curl-ca-bundle automake libtool libyaml libffi libksba', showing last 15 lines of /Users/acewill/.rvm/log/1468253599_ruby-2.3.0/ package_install_curl-ca-bundle_automake_libtool_libyaml_libffi_libksba.log https://github.com/Homebrew/homebrew/wiki/Common-Issues原因是 Mac 上未安裝 Homebrew,需要先安裝 Homebrew。
Homebrew 是什么?
Homebrew 是一個(gè)包管理器,用于在 Mac 上安裝一些 OS X 上沒有的 UNIX 工具。Homebrew 將這些工具統(tǒng)統(tǒng)安裝到了
/usr/local/Cellar目錄中,并在/usr/local/bin中創(chuàng)建符號(hào)鏈接。安裝 Homebrew
Homebrew 官網(wǎng):http://brew.sh
從 Homebrew 官網(wǎng)獲取安裝命令在終端執(zhí)行:
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"需要等待一段時(shí)間,Homebrew 安裝成功之后,重新安裝 RVM。
Homebrew 常用命令
搜索軟件:
$brew search git安裝軟件:
$brew install git查看軟件信息:
$brew info git更新自己:
$brew update檢查過(guò)時(shí)軟件:
$brew outdated升級(jí)可以升級(jí)的軟件:
$brew upgrade清理不需要的軟件版本及其安裝包緩存:
$brew cleanup列出已安裝的軟件:
$brew list卸載軟件:
$brew uninstall git
RVM 安裝成功之后執(zhí)行以下命令,載入 RVM 環(huán)境:
$source ~/.bashrc$source ~/.bash_profile$source ~/.profile最后,執(zhí)行以下命令測(cè)試是否安裝正常:
$rvm -v -
通過(guò) RVM 升級(jí) Ruby
-
列出已知的 Ruby 版本
$rvm list known -
安裝指定的 Ruby 版本
$rvm install 2.3.3 -
列出本地安裝的所有 Ruby 版本
$rvm list -
指定系統(tǒng)默認(rèn)的 Ruby 版本
$rvm use 2.3.3 --default -
刪除指定的 Ruby 版本
$rvm remove 2.0.0
如果網(wǎng)速較慢的話,在執(zhí)行
$rvm install 2.3.3命令時(shí),會(huì)花費(fèi)很長(zhǎng)的時(shí)間,而且很容易報(bào)時(shí)間超時(shí)的錯(cuò)誤,解決辦法就是多次重試,或者等網(wǎng)速好的時(shí)候安裝。另一種解決辦法就是通過(guò) Homebrew 來(lái)升級(jí) Ruby。
打開終端,執(zhí)行以下命令:
$brew install ruby只需要等待很短的時(shí)間就可以升級(jí) Ruby 成功。但通過(guò)這種方法升級(jí) Ruby 之后,Gem 的版本可能不是最新的,我們只需要按照上文中提到的升級(jí) Gem 的方法來(lái)升級(jí) Gem 即可。但是會(huì)出現(xiàn)以下錯(cuò)誤:
ERROR: While executing gem ... (TypeError) no implicit conversion of nil into String解決辦法:打開 Finder-->前往-->前往文件夾,輸入路徑
/usr/local/lib/ruby/2.3.0/rubygems/installer.rb,點(diǎn)擊前往,找到 installer.rb 文件,打開該文件,找到文件中的以下代碼段:if ruby_executable then question << existing然后用以下代碼段替換找到的代碼段:
if ruby_executable then question << (existing || 'an unknown executable')替換之后,Gem 就可以升級(jí)了。
-
-
-
GitHub 無(wú)法鏈接
error: RPC failed; result=56, HTTP code = 200 fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed解決辦法:翻墻,然后重新安裝。
-
CocoaPods 的分支不支持當(dāng)前最新的 Xcode 版本
[!] An error occurred while performinggit pullon repomaster. [!] /usr/bin/git pull --ff-only解決辦法:刪除 master 分支,重新建立新的分支,然后重新設(shè)置倉(cāng)庫(kù)即可。在終端執(zhí)行以下命令:
$sudo rm -fr ~/.CocoaPods/repos/master
CocoaPods 的使用
常用 CocoaPods 命令:
-
$pod setup將所有第三方的 Podspec 索引文件更新到本地的
~/.CocoaPods/repos/目錄下,更新本地倉(cāng)庫(kù)。 -
$pod repo update執(zhí)行
pod repo update更新本地倉(cāng)庫(kù),本地倉(cāng)庫(kù)完成后,即可搜索到指定的第三方庫(kù),作用類似pod setup。不過(guò)這個(gè)命令經(jīng)常不單獨(dú)調(diào)用。比如執(zhí)行pod setup、pod search、pod install、pod update會(huì)默認(rèn)執(zhí)行pod repo update。 -
$pod search 開源庫(kù)查找某一個(gè)開源庫(kù)。
-
$pod list列出所有可用的第三方庫(kù),現(xiàn)在已經(jīng) 2.4W+ 了,還在不斷地增長(zhǎng)。
-
$pod install根據(jù) Podfile.lock 文件中列舉的版本號(hào)來(lái)安裝第三方框架,如果一開始 Podfile.lock 文件不存在,就會(huì)按照 Podfile 文件中列舉的版本號(hào)來(lái)安裝第三方框架。
如果檢查到當(dāng)前三方庫(kù)已經(jīng)有的話,那就不會(huì)去下載了。
$pod install –-no-repo-update安裝開源庫(kù)之前,不會(huì)執(zhí)行
pod repo update指令。 -
$pod update將所有第三方框架更新到最新版本,并且創(chuàng)建一個(gè)新的 Podfile.lock 文件。
無(wú)論當(dāng)前三方庫(kù)是否在項(xiàng)目中已經(jīng)存在,都會(huì)重新下載更新。
$pod update –-no-repo-update更新開源庫(kù)之前,不會(huì)執(zhí)行
pod repo update指令。
以下以 AFNetworking 為例介紹 CocoaPods 的使用。
-
在終端搜索相應(yīng)的開源類庫(kù)
$pod search AFNetworking如果 CocoaPods 支持,將會(huì)輸出搜索到的所有類庫(kù)版本和信息,以及在 Podfile 中配置的寫法,例如:
如果提示沒有找到該開源庫(kù),但是我們這個(gè)第三方確實(shí)存在:
我們可以使用
pod setup更新本地 podspec 索引文件,然后重新搜索。如果按照 1 的方法還是搜索不到,那我們就把
~/Library/Caches/CocoaPods/目錄下的緩存文件刪除。然后pod setup,再重新搜索。
-
進(jìn)入到我們的工程目錄
$cd 我們的工程路徑 -
在我們的工程目錄下創(chuàng)建 Podfile 文件
-
通過(guò) Mac 默認(rèn)文本編輯器編寫
$touch podfile創(chuàng)建 Podfile 文件$open podfile打開 Podfile 文件
打開 Podfile 文件之后即可編寫,編寫完成之后關(guān)閉文本編輯器即可。
-
使用 VIM 編輯器編寫
$vim podfile創(chuàng)建 Podfile 文件并使用 VIM 編寫
執(zhí)行命令之后默認(rèn)是編輯模式,用鍵盤輸入 i,進(jìn)入輸入模式,輸入 pod 信息,完成之后按 Esc 鍵,退出輸入模式進(jìn)入編輯模式,然后再輸入 : 號(hào),進(jìn)入末行模式,在 : 號(hào)后邊輸入 wq 保存退出 Podfile 文件,回到終端,繼續(xù)進(jìn)行下一步。
VIM 介紹
VIM 是一個(gè)類似于 VI 的著名的功能強(qiáng)大、高度可定制的文本編輯器。
VI:Visual Interface,可視化接口。
VIM:VI iMproved,VI 增強(qiáng)版全屏編輯器,又叫模式化編輯器。
VIM 有 3 種模式:
1. 編輯模式(命令模式)(默認(rèn)模式) 2. 輸入模式 3. 末行模式VIM 3 種模式間的轉(zhuǎn)換:
1. 編輯 --> 輸入: i:在當(dāng)前光標(biāo)所在字符的前面,轉(zhuǎn)換為輸入模式 I:在當(dāng)前光標(biāo)所在行的行首,轉(zhuǎn)換為輸入模式 a:在當(dāng)前光標(biāo)所在字符的后面,轉(zhuǎn)換為輸入模式 A:在當(dāng)前光標(biāo)所在行的行尾,轉(zhuǎn)換為輸入模式 o:在當(dāng)前光標(biāo)所在行的下方,新建一行,轉(zhuǎn)換為輸入模式 O:在當(dāng)前光標(biāo)所在行的上方,新建一行,轉(zhuǎn)換為輸入模式 2. 輸入 --> 編輯: Esc 3. 編輯 --> 末行: : 4. 末行 --> 編輯: Esc + ,或者按兩次 Esc 5. 輸入模式和末行模式之間不能直接切換使用 VIM 打開文件:
1. `$vim 文件名 +#` 打開文件,并定位于第 # 行 2. `$vim 文件名 +:` 打開文件,并定位于最后一行使用 VIM 關(guān)閉文件:
1. 末行模式下關(guān)閉文件 :w --> 保存 :w! --> 強(qiáng)行保存 :q --> 退出 :q! --> 不保存并退出 :wq --> 保存并退出 :x --> 保存并退出 2. 編輯模式下關(guān)閉文件 ZZ --> 保存并退出Podfile 介紹
source 'ssh://git@gitlab.9ijx.com:9830/iOS/Specs.git' source 'https://github.com/CocoaPods/Specs.git' platform :iOS, '8.0' use_frameworks! inhibit_all_warnings! workspace 'CocoaPodsTest' target 'CocoaPodsTest' do project 'CocoaPodsTest' pod 'AFNetworking' pod 'JYCarousel', '0.0.1' pod 'WCJCache', :git => "http://gitlab.9ijx.com/iOS/WCJCache.git" target :CocoaPodsTestUITests do inherit! :search_paths pod 'YYText' end endPodfile 語(yǔ)法解釋:
1. source * 指定 specs 的位置,自定義添加自己的 podspec。 * 如果沒有自定義添加 podspec,則可以不添加這一項(xiàng),因?yàn)槟J(rèn)使用 CocoaPods 官方的 source。一旦指定了其它 source,那么就必須指定官方的 source,如上例所示。 2. platform :iOS, '8.0' * 指定了開源庫(kù)應(yīng)該被編譯在哪個(gè)平臺(tái)以及平臺(tái)的最低版本。 * 如果不指定平臺(tái)版本,官方文檔里寫明各平臺(tái)默認(rèn)值為 iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0。 3. use_frameworks! 使用 frameworks 動(dòng)態(tài)庫(kù)替換靜態(tài)庫(kù)鏈接 * Swift 項(xiàng)目 CocoaPods 默認(rèn) use_frameworks! * OC 項(xiàng)目 CocoaPods 默認(rèn) #use_frameworks! 4. inhibit_all_warnings! * 屏蔽 CocoaPods 庫(kù)里面的所有警告 * 這個(gè)特性也能在子 target 里面定義,如果你想單獨(dú)屏蔽某 pod 里面的警告也是可以的,例如: `pod 'JYCarousel', :inhibit_warnings => true` 5. workspace * 指定包含所有 projects 的 Xcode workspace * 如果沒有指定 workspace,并且在 Podfile 所在目錄下只有一個(gè) project,那么 project 的名稱會(huì)被用作 workspace 的名稱 6. target ‘xxxx’ do ... end * 指定特定 target 的依賴庫(kù) * 可以嵌套子 target 的依賴庫(kù) 7. project * 默認(rèn)情況下是沒有指定的,當(dāng)沒有指定時(shí),會(huì)使用 Podfile 目錄下與 target 同名的工程 * 如果指定了 project,如上例所示,則 CocoaPodsTest 這個(gè) target 只有在 CocoaPodsTest 工程中才會(huì)鏈接 8. inherit! :search_paths * 明確指定繼承于父層的所有 pod,默認(rèn)就是繼承的 9. 依賴庫(kù)的基本寫法 pod 'AFNetworking' --> 不顯式指定依賴庫(kù)版本,表示每次都獲取最新版本 pod 'AFNetworking', '2.0' --> 只使用 2.0 版本 pod 'AFNetworking', '> 2.0' --> 使用高于 2.0 的版本 pod 'AFNetworking', '>= 2.0' --> 使用大于或等于 2.0 的版本 pod 'AFNetworking', '< 2.0' --> 使用小于 2.0 的版本 pod 'AFNetworking', '<= 2.0' --> 使用小于或等于 2.0 的版本 pod 'AFNetworking', '~> 0.1.2' --> 使用大于等于 0.1.2 但小于 0.2 的版本 pod 'AFNetworking', '~> 0.1' --> 使用大于等于 0.1 但小于 1.0 的版本 pod 'AFNetworking', '~> 0' --> 高于 0 的版本,寫這個(gè)限制和什么都不寫是一個(gè)效果,都表示使用最新版本關(guān)于 Podfile.lock:
當(dāng)執(zhí)行 `pod install` 之后,CocoaPods 會(huì)生成一個(gè)名為 Podfile.lock 的文件。 Podfile.lock 應(yīng)該加入到版本控制里面,不應(yīng)該把這個(gè)文件加入到 ignores 中。因?yàn)?Podfile.lock 會(huì)鎖定當(dāng)前各依賴庫(kù)的版本,之后如果多次執(zhí)行 `pod install` 不會(huì)更改版本,執(zhí)行 `pod update` 時(shí)才會(huì)更改 Podfile.lock。 這樣在多人協(xié)作的時(shí)候,可以防止出現(xiàn)第三方庫(kù)升級(jí)時(shí)造成大家各自的第三方庫(kù)版本不一致。 -
-
在終端執(zhí)行以下命令:
$pod update –-no-repo-update成功之后打開工程,此時(shí)我們應(yīng)該打開最新生成的 .xcworkspace 文件,即可使用該第三方庫(kù)。
移除項(xiàng)目中已經(jīng)配置的類庫(kù)
打開終端,cd 到已經(jīng)配置好 CocoaPods 的項(xiàng)目目錄下
打開該目錄下的 Podfile 文件
刪除 Podfile 文件中要移除的第三方庫(kù)
重新執(zhí)行
$pod update –-no-repo-update命令
完成以上步驟即可移除項(xiàng)目中已經(jīng)配置的類庫(kù)
移除項(xiàng)目中的 CocoaPods
刪除工程文件夾下的 Podfile、Podfile.lock 和 Pods 文件夾
刪除 .xcworkspace 文件
打開 xcodeproj 文件,刪除項(xiàng)目中的 Pods 文件夾以及 Pods.xcconfig 引用和 libpods.a 靜態(tài)庫(kù)
打開 Build Phases 選項(xiàng),刪除
Check Pods Manifest.lock、Copy Pods Resources和Embeded Pods Frameworks選項(xiàng)
完成以上步驟即可移除項(xiàng)目中的 CocoaPods,項(xiàng)目即可編譯運(yùn)行。
CocoaPods 的卸載
在終端執(zhí)行以下命令:
$sudo gem uninstall CocoaPods
需要輸入密碼,之后等待很短時(shí)間就會(huì)顯示卸載成功。
卸載指定版本的 CocoaPods:
$sudo gem uninstall CocoaPods -v 0.39.0

