cocopods

一、什么是CocoaPods

1、為什么需要CocoaPods

在進行iOS開發的時候,總免不了使用第三方的開源庫,比如SBJson、AFNetworking、Reachability等等。使用這些庫的時候通常需要:

?

  • 下載開源庫的源代碼并引入工程
  • 向工程中添加開源庫使用到的framework
  • 解決開源庫和開源庫以及開源庫和工程之間的依賴關系、檢查重復添加的framework等問題
  • 如果開源庫有更新的時候,還需要將工程中使用的開源庫刪除,重新執行前面的三個步驟,頓時頭都大了。。。

?

自從有了CocoaPods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,CocoaPods會為我們做好一切!

2、什么是CocoaPods

CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關系,下載庫的源代碼,同時通過創建一個Xcode的workspace來將這些第三方庫和我們的工程連接起來,供我們開發使用。

使用CocoaPods的目的是讓我們能自動化的、集中的、直觀的管理第三方開源庫。

?

二、安裝CocoaPods

1、安裝

CocoaPods是用Ruby實現的,要想使用它首先需要有Ruby的環境。幸運的是OS X系統默認的已經可以運行Ruby了,因此我們只需要執行以下命令:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?sudo?gem?install?cocoapods??

CocoaPods是以Ruby gem包的形式被安裝的。在安裝執行的過程中,可能會問我們是不是更新rake,輸入y即可。這是因為rake gem包會在安裝的過程中檢查更細,如果有可用的新版本就會出現剛才的選項。

?

在安裝進程結束的時候,執行命令:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?pod?setup??

如果沒有報錯,就說明一切安裝就成功了!

?

2、安裝過程中可能遇到的問題

①執行完install命令半天沒反應

這有可能是因為Ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的,替換方式如下:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?gem?sources?--remove?https://rubygems.org/??
  2. //等有反應之后再敲入以下命令??
  3. $?gem?sources?-a?http://ruby.taobao.org/??

要想驗證是否替換成功了,可以執行:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?gem?sources?-l??

正常的輸出是:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. ***?CURRENT?SOURCES?***??
  2. ??
  3. http://ruby.taobao.org/??

?

②gem版本過老

?

gem是管理Ruby庫和程序的標準包,如果它的版本過低也可能導致安裝失敗,解決方案自然是升級gem,執行下述命令即可:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?sudo?gem?update?--system??

?

③安裝完成后,執行pod setup命令時報錯:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in?`to_specs':?Could?not?find?'cocoapods'?(>=?0)?among?6?total?gem(s)?(Gem::LoadError)??
  2. ????from?/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in?`to_spec'??
  3. ????from?/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in?`gem'??
  4. ????from?/Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in?`<main>'??

這就是路徑設置的問題,可以通過執行:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?rvm?use?ruby-1.9.3-p448??

解決該問題。

?

3、升級CocoaPods

升級很簡單,再次執行安裝命令即可:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?sudo?gem?install?cocoapods??

需要注意的是,如果安裝的時候使用了sudo,升級的時候一樣需要使用該關鍵字,不然升級完了以后又會出現路徑不匹配問題。

?

?

三、使用CocoaPods

如果之前做的一切順利,接下來就可以體驗體驗CocoaPods的神奇之處了,需要經過以下幾步:

為了演示這個過程,我創建了一個名為CocoaPodsTest的工程。

1、創建Podfile

CocoaPods的一切都是從一個名為Podfile的文件開始的,我們需要先創建這個文件。個人習慣使用命令行,我會這樣做:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?cd?/Users/wangzz/Desktop/CocoaPodsTest??
  2. $?touch?Podfile??

首先進入到工程的根目錄下,創建空白的Podfile文件,創建完畢的目錄結構如下圖:

?



(PS:Podfile文件也可以不放在工程的根目錄下,只是會稍微麻煩點,在下一篇文章中會有介紹,敬請關注。)

2、編輯Podfile

根據需要,我們可以在Podfile文件中寫入需要用到的第三方庫,以SBJson、AFNetworking、Reachability三個庫為例,我的Podfile內容如下:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. platform?:ios??
  2. pod?'Reachability',??'~>?3.0.0'??
  3. pod?'SBJson',?'~>?4.0.0'??
  4. ??
  5. platform?:ios,?'7.0'??
  6. pod?'AFNetworking',?'~>?2.0'??

?

3、執行導入命令

?

準備工作都完成后,開始導入第三方庫:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. $?cd?/Users/wangzz/Desktop/CocoaPodsTest??
  2. $?pod?install??

首先進入工程根目錄,然后執行pod install命令,CocoaPods就開始為我們做下載源碼、配置依賴關系、引入需要的framework等一些列工作,命令的執行結果打印出來如下:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. Analyzing?dependencies??
  2. Downloading?dependencies??
  3. Installing?AFNetworking?(2.1.0)??
  4. Installing?JSONKit?(1.5pre)??
  5. Installing?Reachability?(3.0.0)??
  6. Generating?Pods?project??
  7. Integrating?client?project??
  8. ??
  9. [!]?From?now?on?use?`CocoaPodsTest.xcworkspace`.??

這就說明pod install命令執行成功了。再來看看工程根目錄發生的變化,如下圖:

?

可以看到,工程的根目錄下多了三個東西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目錄。

(PS:篇幅有限,Podfile.lock文件會放到系列文章的下一篇介紹,敬請關注。)

?

再看看剛才執行完pod install命令打印出來的內容的最后一行:

[objc]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. [!]?From?now?on?use?`CocoaPodsTest.xcworkspace`.??

提示我們從現在起,我們需要使用CocoaPodsTest.xcworkspace文件來開發。

?

對于工程發生的變化,有幾點需要說明:

?

  • 第三方庫會被編譯成靜態庫供我們正真的工程使用

?

CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程,該工程就放在剛才新生成的Pods目錄下。整個第三方庫工程會生成一個名稱為libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。

?

  • 我們的工程和第三方庫所在的工程會由一個新生成的workspace管理

?

為了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的CocoaPodsTest.xcworkspace文件。

原來的工程設置已經被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。

打開CocoaPodsTest.xcworkspace,界面如下:

工程的目錄結構還是非常明顯的。

在項目中引用剛才添加的第三方庫的頭文件,執行編譯操作,果斷成功!

至此,CocoaPods使用篇告一段落,接下來打算再用一個篇幅介紹CocoaPods稍微深層次的東西,敬請關注。

?

四、參考資料

1、http://code4app.com/article/cocoapods-install-usage

2、http://cocoapods.org/

轉載于:https://www.cnblogs.com/106dapeng/p/4831533.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258294.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258294.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258294.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS3學習手記(10) 過渡

CSS3過渡 允許css的屬性值在一定的時間內平滑地過渡在鼠標單擊、獲取焦點、被點擊或對元素任何改變中觸發&#xff0c;并圓滑地以動畫效果改變CSS的屬性值transition transition-property屬性檢索或設置對象中的參與過渡的屬性 語法 transition-property:none|all|property …

POJ 1286 Necklaces of Beads (Burnside定理,有限制型)

題目鏈接&#xff1a;http://vjudge.net/problem/viewProblem.action?id11117 就是利用每種等價情形算出置換節之后算組合數 #include <stdio.h> #include <cstring> #include <cstdlib> #include <algorithm> #include <cmath>using namespace…

全局搜索快捷鍵_Windows 自帶的聚合搜索來了,與 Mac 的 Spotlight 相比體驗如何?...

最近 Windows 10 推出了自帶的聚合搜索功能 PowerToys Run&#xff0c;取代了之前的 WinR。蘋果的 macOS 以人性化著稱&#xff0c;有幾個功能讓 Windows 用戶一直很羨慕&#xff0c;比如全局的聚合搜索工具 Spotlight。在任何界面 command空格&#xff0c;輸入關鍵字就能搜索電…

transform你不知道的那些事

transform是諸多css3新特性中最打動我的&#xff0c;因為它讓方方正正的box module變得真實了。 transform通過一組函數實現了對盒子大小、位置、角度的2D或者3D變換。不過很長時間內&#xff0c;我對以下問題都想不太明白&#xff1a; 1、尺寸縮放scale與zoom變換有何不同&…

【SVM】簡單介紹(三)

我們考慮SVM的對偶問題&#xff0c;我們通常是在對偶空間中進行求解的。 1、Lagrange Multipliers 對于一個很一般的問題 Minimize f(x)subject to {a(x)≥0b(x)≤0c(x)0\begin{aligned} \text { Minimize } & f(x) \\ \text { subject to } \quad & \left\{\begin{a…

玩轉iOS開發:NSURLSession講解(三)

文章分享至我的個人技術博客: https://cainluo.github.io/14986211698053.html 前言 雖然前面兩講都是說了NSURLSession的一些理論上的知識, 但我們現在起碼對NSURLSession有個大概的了解, 并不會像一開始的那樣, 一臉懵逼的看著, 這個請求是什么鬼, 那個方法是什么鬼, Task是什…

輕松搞定面試中的二叉樹題目

版權全部&#xff0c;轉載請注明出處&#xff0c;謝謝&#xff01;http://blog.csdn.net/walkinginthewind/article/details/7518888 樹是一種比較重要的數據結構&#xff0c;尤其是二叉樹。二叉樹是一種特殊的樹&#xff0c;在二叉樹中每一個節點最多有兩個子節點&#xff0c;…

李倩星r語言實戰_《基于R的統計分析與數據挖掘》教學大綱

《基于R的統計分析與數據挖掘》課程教學大綱課程代碼&#xff1a;090542009課程英文名稱&#xff1a;R Language and Data Mining課程總學時&#xff1a;32講課&#xff1a;32實驗&#xff1a;0上機&#xff1a;0適用專業&#xff1a;應用統計學大綱編寫(修訂)時間&#xff1a;…

自動化測試小結

最近差不多一年從事自動化的測試工作&#xff0c;從開始對自動化一點都不了解到現在能從實現用例、手動命令行執行用例、自制工具來執行用例&#xff0c;感覺進步還是有的。 自動化測試對于手動測試應該是有不小的優勢的&#xff0c;雖然在自動化的用例實現中剛開始的時候會顯得…

python地理可視化_【Python教程】地理可視化之二

Basemap是Matplotlib的一個子包&#xff0c;負責地圖繪制。昨天的推送對如何繪制風向圖進行了描述&#xff0c;本文再次利用該包簡單介紹如何繪制海洋及海冰溫度彩色圖示&#xff0c;該圖常見于NOAA官網。具體操作如下&#xff1a;導入命令1)設置工作環境并導入程序包%cd "…

尋找白板上的便簽條

問題來源&#xff1a;http://answers.opencv.org/question/162480/contour-detection-for-gray-stickers-on-white-background/ 題目的大概意思就是這樣的白板&#xff0c;尋找上面的各種便簽條。我找到了橘色的&#xff0c;結果是這樣代碼是這樣Mat src imread("gray-st…

LeetCode Permutations

原題鏈接在這里&#xff1a;https://leetcode.com/problems/permutations/ 題目&#xff1a; Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2]…

去除內存上的警告,避免程序崩掉

# pragma clang diagnostic push # pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self performSelector:callFunc withObject:array[1]]; # pragma clang diagnostic pop 使用原理&#xff1a;將出現警告的代碼加入內存棧中轉載于:https://www.c…

opengl2 vtk 編譯_編譯和使用VTK時值得注意的點(待續)

最近的一個項目中需要使用VTK&#xff0c;于是開始了VTK的漫漫編譯之路。長篇大論的編譯步驟網上數不勝數&#xff0c;在這里不再細說&#xff0c;可自行google。這里主要說一些在編譯過程中需要注意的地方&#xff0c;以免走歪路。1、使用cmake進行第一次configure的時候需要選…

gg

轉載于:https://www.cnblogs.com/lyzuikeai/p/7091206.html

二:Go編程語言規范-類型

1.類型 布爾值&#xff0c;數值與字符串類型的實例的命名是預聲明的。 數組&#xff0c;結構&#xff0c;指針&#xff0c;函數&#xff0c;接口&#xff0c;切片&#xff0c;映射和信道這些復合類型可由類型字面構造。 每個類型 T 都有一個 基本類型&#xff1a;若 T 為預聲明…

HDU 1728 逃離迷宮

這道題做的我想哭啊。。WA了將近十次了吧 一開始我用數組模擬的隊列&#xff0c;后來和老大代碼對拍&#xff0c;感覺改的是基本都一模一樣了&#xff0c;還是WA 實在沒有辦法了&#xff0c;改用queue了 題目里的x是列y是行&#xff0c;和代碼里的反過來的&#xff0c;要注意&a…

Nginx(六)-- 配置文件之Gzip

1.概念及作用 Gizp主要對內容、靜態文件做壓縮&#xff0c;用來提升網站訪問速度&#xff0c;節省帶寬。 2.使用方法 gzip既可以配置在server中&#xff0c;也可以配置在server外&#xff0c;此處配置在server中&#xff0c;如下&#xff1a; 說明&#xff1a;  gizp on|off 是…

誤碼率越高越好還是越低越好_夜間護理步驟越多越好還是越少越好?NFF

現在很多人都知道了夜晚是護膚的黃金護膚時間&#xff0c;有些很聰明的姐妹就從夜晚著手&#xff0c;使用很多種護膚品&#xff0c;希望達到事半功倍的效果&#xff0c;但好皮膚不常有&#xff0c;皮膚問題卻常有&#xff01;既然如此&#xff0c;不少人就問了&#xff0c;夜間…

【隨機森林】random forests 簡單介紹

Random Forest&#xff0c;顧名思義 Random 就是隨機抽取&#xff1b; Forest 就是說這里不止一棵樹&#xff0c;而由 一群決策樹組成的一片森林 &#xff0c;連起來就是用隨機抽取的方法訓練出一群決策樹來完成分類任務。RF用了兩次隨機抽取, 一次是對訓練樣本的隨機抽取; 另一…