CocoaPods

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í)候,我們需要:

  1. 把開源庫(kù)的源代碼復(fù)制到項(xiàng)目中

  2. 添加一些依賴框架和動(dòng)態(tài)庫(kù)

  3. 設(shè)置 -Objc,-fno-objc-arc 等參數(shù)

  4. 管理它們的更新

在使用 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)目中。

  1. 第三方庫(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)目錄中。

  2. 原來(lái)的工程設(shè)置已經(jīng)被更改了,這時(shí)候我們直接打開原來(lái)的工程文件去編譯就會(huì)報(bào)錯(cuò)。我們的工程和第三方庫(kù)所在的 Pods 工程會(huì)被以一個(gè)新生成的 workspace 的形式組織和管理,方便我們直觀的管理工程和第三方庫(kù)。

  3. CocoaPods 通過(guò)一個(gè)名為 Pods.xcconfig 的文件來(lái)在編譯時(shí)設(shè)置所有的依賴和參數(shù)。

CocoaPods 的核心組件

CocoaPods 是用 Ruby 寫的,并劃分成了若干個(gè) Gem 包。

與 CocoaPods 相關(guān)的兩個(gè)目錄:

  1. ~/.CocoaPods/repos/:這個(gè)目錄存儲(chǔ)遠(yuǎn)端的 podspec 文件到本地。master 是所有第三方的 podspec 索引文件。其它的是我們自定義的 podspec 索引文件。

  2. ~/Library/Caches/CocoaPods/:這個(gè)目錄就是緩存文件的存儲(chǔ)目錄。

CocoaPods 在解析執(zhí)行過(guò)程中最重要的幾個(gè)包的路徑分別是:CocoaPods/CocoaPods、CocoaPods/Core 和 CocoaPods/Xcodeproj。

  1. CocoaPods/CocoaPods:這是面向用戶的組件,每當(dāng)執(zhí)行一個(gè) pod 命令時(shí),這個(gè)組件將被激活。它包括了所有實(shí)用 CocoaPods 的功能,并且還能調(diào)用其它 Gem 包來(lái)執(zhí)行任務(wù)。

  2. CocoaPods/Core:Core Gem 提供了與 CocoaPods 相關(guān)的文件(主要是 Podfile 和 Podspecs)的處理。

    1. Podfile:該文件用于配置項(xiàng)目所需要的第三方庫(kù),它可以被高度定制。

    2. Podspecs:該文件描述了一個(gè)庫(kù)將怎樣被添加進(jìn)工程中。.podspec 文件可以標(biāo)識(shí)該第三方庫(kù)所需要的源碼文件、依賴庫(kù)、編譯選項(xiàng),以及其他第三方庫(kù)需要的配置。

  3. 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。

  1. 移除系統(tǒng) ruby 默認(rèn)源

    $gem sources --remove https://rubygems.org/

  2. 使用新的源

    $gem sources -a https://ruby.taobao.org/(淘寶的源,不建議使用)

    $gem source -a https://gems.ruby-china.org(源已改變:$gem source -a https://gems.ruby-china.com

  3. 驗(yàn)證是否替換成功

    $gem sources -l

    如果結(jié)果如下圖,表明替換成功。

安裝 CocoaPods

  1. 選擇版本

    安裝最新版本

    $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

  2. 安裝

    $pod setup

    pod setup 的作用:將所有第三方的 Podspec 索引文件更新到本地的 ~/.CocoaPods/repos 目錄下。所有的第三方開源庫(kù)的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs 管理,我們需要把這個(gè) Podspec 文件保存到本地,這樣才能使用命令 pod search 來(lái)搜索一個(gè)開源庫(kù)。

    1. 如果沒有執(zhí)行過(guò) pod setup,用戶根目錄 ~ 下是找不到 .CocoaPods/repos 目錄的,沒有創(chuàng)建這個(gè)目錄。

    2. 如果執(zhí)行了 pod setup,但是命令沒有執(zhí)行成功,那么會(huì)創(chuàng)建 ~/.CocoaPods/repos 目錄,只不過(guò)目錄是空的。

    3. 如果執(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)查看下載文件的大小。

  1. 進(jìn)入文件目錄 ~/.CocoaPods

    $cd ~/.CocoaPods

  2. 查看文件大小

    $du -sh

  3. 驗(yàn)證是否安裝成功以及是否是自己需要的版本

    $pod --version

安裝過(guò)程常見錯(cuò)誤

  1. Gem 版本過(guò)低

    Failed to send stats: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert handshake failure

    可以在終端輸入以下命令:

    1. 查看 Gem 的版本號(hào)

      $gem -v 或者 $gem --version

    2. 升級(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 介紹:

    1. Gem 是一個(gè)管理 Ruby 庫(kù)和程序的標(biāo)準(zhǔn)包,它通過(guò) RubyGem(如 http://rubygems.org/ )源來(lái)查找、安裝、升級(jí)和卸載軟件包,非常的便捷。如果 Gem 的版本過(guò)低就會(huì)導(dǎo)致 CocoaPods 安裝失敗。

    2. 所有的 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 -l

    Gem 添加配置源:

    $gem sources -a 源的url

    Gem 刪除配置源:

    $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

  2. Ruby 版本過(guò)低

    ERROR: Error installing CocoaPods: activesupport requires Ruby version >= 2.2.2

    在終端輸入以下命令查看當(dāng)前 Ruby 版本:

    $ruby -v

    Ruby 是什么?

    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

    1. 升級(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 常用命令

      1. 搜索軟件:$brew search git

      2. 安裝軟件:$brew install git

      3. 查看軟件信息:$brew info git

      4. 更新自己:$brew update

      5. 檢查過(guò)時(shí)軟件:$brew outdated

      6. 升級(jí)可以升級(jí)的軟件:$brew upgrade

      7. 清理不需要的軟件版本及其安裝包緩存:$brew cleanup

      8. 列出已安裝的軟件:$brew list

      9. 卸載軟件:$brew uninstall git

      RVM 安裝成功之后執(zhí)行以下命令,載入 RVM 環(huán)境:

      $source ~/.bashrc

      $source ~/.bash_profile

      $source ~/.profile

      最后,執(zhí)行以下命令測(cè)試是否安裝正常:

      $rvm -v

    2. 通過(guò) RVM 升級(jí) Ruby

      1. 列出已知的 Ruby 版本

        $rvm list known

      2. 安裝指定的 Ruby 版本

        $rvm install 2.3.3

      3. 列出本地安裝的所有 Ruby 版本

        $rvm list

      4. 指定系統(tǒng)默認(rèn)的 Ruby 版本

        $rvm use 2.3.3 --default

      5. 刪除指定的 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í)了。

  3. GitHub 無(wú)法鏈接

    error: RPC failed; result=56, HTTP code = 200 fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed

    解決辦法:翻墻,然后重新安裝。

  4. 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 命令:

  1. $pod setup

    將所有第三方的 Podspec 索引文件更新到本地的 ~/.CocoaPods/repos/ 目錄下,更新本地倉(cāng)庫(kù)。

  2. $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 installpod update 會(huì)默認(rèn)執(zhí)行 pod repo update。

  3. $pod search 開源庫(kù)

    查找某一個(gè)開源庫(kù)。

  4. $pod list

    列出所有可用的第三方庫(kù),現(xiàn)在已經(jīng) 2.4W+ 了,還在不斷地增長(zhǎng)。

  5. $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 指令。

  6. $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 的使用。

  1. 在終端搜索相應(yīng)的開源類庫(kù)

    $pod search AFNetworking

    如果 CocoaPods 支持,將會(huì)輸出搜索到的所有類庫(kù)版本和信息,以及在 Podfile 中配置的寫法,例如:

    如果提示沒有找到該開源庫(kù),但是我們這個(gè)第三方確實(shí)存在:

    1. 我們可以使用 pod setup 更新本地 podspec 索引文件,然后重新搜索。

    2. 如果按照 1 的方法還是搜索不到,那我們就把 ~/Library/Caches/CocoaPods/ 目錄下的緩存文件刪除。然后 pod setup,再重新搜索。

  2. 進(jìn)入到我們的工程目錄

    $cd 我們的工程路徑

  3. 在我們的工程目錄下創(chuàng)建 Podfile 文件

    1. 通過(guò) Mac 默認(rèn)文本編輯器編寫

      $touch podfile 創(chuàng)建 Podfile 文件

      $open podfile 打開 Podfile 文件

    打開 Podfile 文件之后即可編寫,編寫完成之后關(guān)閉文本編輯器即可。

    1. 使用 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
    
        end
    

    Podfile 語(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ù)版本不一致。
    
  4. 在終端執(zhí)行以下命令:

    $pod update –-no-repo-update

    成功之后打開工程,此時(shí)我們應(yīng)該打開最新生成的 .xcworkspace 文件,即可使用該第三方庫(kù)。

移除項(xiàng)目中已經(jīng)配置的類庫(kù)

  1. 打開終端,cd 到已經(jīng)配置好 CocoaPods 的項(xiàng)目目錄下

  2. 打開該目錄下的 Podfile 文件

  3. 刪除 Podfile 文件中要移除的第三方庫(kù)

  4. 重新執(zhí)行 $pod update –-no-repo-update 命令

完成以上步驟即可移除項(xiàng)目中已經(jīng)配置的類庫(kù)

移除項(xiàng)目中的 CocoaPods

  1. 刪除工程文件夾下的 Podfile、Podfile.lock 和 Pods 文件夾

  2. 刪除 .xcworkspace 文件

  3. 打開 xcodeproj 文件,刪除項(xiàng)目中的 Pods 文件夾以及 Pods.xcconfig 引用和 libpods.a 靜態(tài)庫(kù)

  4. 打開 Build Phases 選項(xiàng),刪除 Check Pods Manifest.lockCopy Pods ResourcesEmbeded 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來(lái)越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,872評(píng)論 0 39
  • 這是我參加日記星球?qū)懽饔?xùn)練的第四篇日記,我的文采不好,想到什么就寫什么。 看到這張圖片我就想起了很多人,最愛的家人...
    馨之芬芳閱讀 380評(píng)論 0 1
  • 冷夜竟添幾許情 媚開顏濃 已覺芳心動(dòng) 詩(shī)情畫意誰(shuí)與共 軟枕斜依 托腮幻影 可否入好夢(mèng) 夜闌心扉燈花弄
    李菲兒_a4d1閱讀 276評(píng)論 1 1
  • 你為什么而努力賺錢? 一 “為了不再每天擠公交車?!?連翹是坐在新買的座駕里說(shuō)這句話的。 “我剛畢業(yè)的時(shí)候不上進(jìn),...
    未聞鹿鳴閱讀 381評(píng)論 0 0
  • 閨女出嫁后,爸爸媽媽這邊就是娘家人,娘家人該怎么做,自古以來(lái)就有規(guī)定,那就是,好娘家不給女出頭。出頭,就是撐腰。 ...
    勾勾5閱讀 2,844評(píng)論 1 4

友情鏈接更多精彩內(nèi)容