一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS CocoaPods詳細使用方法

IOS CocoaPods詳細使用方法

2021-01-27 16:16iOS開發網 IOS

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

一、什么是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了,因此我們只需要執行以下命令:

?
1
$ sudo gem install cocoapods

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

?
1
$ pod setup

如果沒有報錯,就說明一切安裝就成功了!
2、安裝過程中可能遇到的問題
①執行完install命令半天沒反應
這有可能是因為ruby的默認源使用的是cocoapods.org,國內訪問這個網址有時候會有問題,網上的一種解決方案是將遠替換成淘寶的,替換方式如下:

?
1
2
3
$ gem sources --remove https://rubygems.org/
//等有反應之后再敲入以下命令
$ gem sources -a http://ruby.taobao.org/

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

?
1
$ gem sources -l

正常的輸出是:

?
1
2
3
*** current sources ***
 
http://ruby.taobao.org/

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

?
1
$ sudo gem update --system

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

?
1
2
3
4
/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)
    from /users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'
    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'
    from /users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'

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

?
1
$ rvm use ruby-1.9.3-p448

解決該問題。
3、升級cocoapods
升級很簡單,再次執行安裝命令即可:

?
1
$ sudo gem install cocoapods

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


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

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

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

?
1
2
$ cd /users/wangzz/desktop/cocoapodstest
$ touch podfile

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

IOS CocoaPods詳細使用方法

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

2、編輯podfile
根據需要,我們可以在podfile文件中寫入需要用到的第三方庫,以sbjson、afnetworking、reachability三個庫為例,我的podfile內容如下:

?
1
2
3
4
5
6
platform :ios
pod 'reachability', '~> 3.0.0'
pod 'sbjson', '~> 4.0.0'
 
platform :ios, '7.0'
pod 'afnetworking', '~> 2.0'

3、執行導入命令
準備工作都完成后,開始導入第三方庫:

?
1
2
$ cd /users/wangzz/desktop/cocoapodstest
$ pod install

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

?
1
2
3
4
5
6
7
8
9
analyzing dependencies
downloading dependencies
installing afnetworking (2.1.0)
installing jsonkit (1.5pre)
installing reachability (3.0.0)
generating pods project
integrating client project
 
[!] from now on use `cocoapodstest.xcworkspace`.

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

IOS CocoaPods詳細使用方法

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

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

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

?
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,界面如下:

IOS CocoaPods詳細使用方法

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

在項目中引用剛才添加的第三方庫的頭文件,執行編譯操作,果斷成功!
至此,cocoapods使用篇告一段落,接下來打算再用一個篇幅介紹cocoapods稍微深層次的東西,敬請關注。

四、參考資料

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

延伸 · 閱讀

精彩推薦
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
主站蜘蛛池模板: 热国产热综合 | 小仙夜晚慰自催眠mp3护士篇 | 国产成人影院 | 狠狠做五月深爱婷婷天天综合 | 男同桌扒开女同桌胸罩喝奶 | 草嫩社区| 国产一级黄色网 | 免费日批软件 | 成人免费影院 | 欧美色在线 | 国产福利视频一区二区微拍视频 | 秋霞一级毛片 | 成人性用品 | 九九九九九九精品免费 | 91天堂一区二区 | 日本伊人色综合网 | 红色一片在线影视 | 秋霞理论在一l级毛片 | 黑帮少爷爱上我第8集在线观看 | 女人与zzzooooxxx| 国产亚洲福利精品一区 | 久久久91精品国产一区二区 | 成人快手破解版 | 亚洲国产精品一区二区三区久久 | 亚洲AV中文字幕无码久久 | 欧美日韩国产精品综合 | 亚洲国产成人久久精品hezyo | 精品国产欧美精品v | 久久精品小视频 | 国产精品亚洲一区二区久久 | aaa级大片| 忘忧草研究院一二三 | 国产久热精品 | 青青草视频国产 | ai换脸杨幂被c在线观看 | mm131亚洲精品久久 | 日韩无砖专区2020在线 | chinesegay黑袜玩奴 | 日韩精品久久不卡中文字幕 | 午夜福利在线观看6080 | chinesemature老女人 |