1. 程式人生 > >Cocopods安裝和使用教程

Cocopods安裝和使用教程

前言

前幾天釋出我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時候。對CocoaPods重新學習了一下,之前只是會簡單的使用,並沒有全面的瞭解。現在要對它做一個學習記錄吧,現在我還是隻會簡單的使用_,教程只是我誇大的說法(別罵我)。

下面的操作都是經過親自驗證通過的,放心操作!Cocoapods這部分知識一共有三篇部落格:

1.CocoaPods的日常使用

2.建立CocoaPods的私有庫

3.建立CocoaPods的開源庫

那就跟我一起來學習一下CocoaPods吧

一. CocoaPods的介紹

什麼是CocoaPods

CocoaPods是一個負責管理iOS專案中第三方開源庫的工具,CocoaPods的專案原始碼在https://github.com/CocoaPods/Specs上管理。

經過CocoaPods團隊的不懈努力,2016年5月10號,CocoaPods終於在其官方部落格上宣佈正式釋出CocoaPods 1.0。與此同時,公開了相應的Mac版App——CocoaPods App 1.0 。

二. CocoaPods的安裝

1. 替換ruby源

CocoaPods是基於ruby ecosystem的,需要ruby環境,使用ruby的gem命令。所以我們的系統要有ruby環境。然而Mac系統預設會安裝好ruby環境。可在終端ruby -v

檢視ruby版本:

  1. //檢視ruby版本

  2. ruby -v

  3. //輸出資訊

  4. ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

檢視ruby源

gem sources -l

預設情況下,終端會顯示下面:

  1. *** CURRENT SOURCES ***

  2. https://rubygems.org/

當然這個源在牆內是訪問不到的,所以要更換到ruby-china的映象

  1. // 1.移除掉原有的源

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

  3. //2.淘寶的源已經不更新維護了,現在使用ruby-china的源哦

  4. gem source -a https://gems.ruby-china.org

  5. 以下命令新增淘寶的源:(不建議繼續使用)

  6. gem sources -a https://ruby.taobao.org/

  7. // 3.驗證是否替換成功

  8. gem sources -l

如果顯示下面輸出就說明正確:

  1. *** CURRENT SOURCES ***

  2. https://gems.ruby-china.org

2. 更新升級 Gem 版本

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

  1. // 更新升級gem,國內需要切換源

  2. sudo gem update --system

檢視gem版本

  1. gem -v

  2. 2.6.6

3. 安裝CocoaPods

OS X 10.11 以前安裝命令為:

  1. sudo gem install cocoapods// 安裝cocoapods

Mac系統為OS X EL Capitan安裝命令為:

  1. //安裝最新版本

  2. sudo gem install -n /usr/local/bin cocoapods

  3. //安裝指定版本

  4. sudo gem install -n /usr/local/bin cocoapods -v 1.0.0

  5. //安裝最新的release beta版本

  6. sudo gem install -n /usr/local/bin cocoapods --pre

如果你想解除安裝CocoaPods怎麼辦?看下面:

  1. //解除安裝CocoaPods

  2. sudo gem uninstall cocoapods

4. 更新Podspec索引檔案

如果按照上面3個步驟沒問題,用命令pod --version檢視是否安裝成功,如果成功會顯示pod的版本。

pod setup作用:將所有第三方的Podspec索引檔案更新到本地的~/.cocoapods/repos目錄下

pod安裝成功之後一個首先的操作就是執行命令(不是必須的):

pod setup

我們需要把這個Podspec檔案儲存到本地,這樣才能讓我們使用命令pod search 開源庫搜尋一個開源庫,怎樣才能把github上的Podspec檔案儲存本地呢?那就是 pod setup

執行pod setup時,CocoaPods 會將第三方的podspec索引檔案更新到本地的~/.cocoapods/repos目錄下

  • 如果沒有執行過 pod setup,那使用者根目錄下~找不到.cocoapods/repos目錄的,沒有建立這個目錄。

  • 如果執行 pod setup,並且命令沒有執行成功,那麼會建立~/.cocoapods/repos目錄,只不過目錄是空的。

  • 如果執行 pod setup,並且命令執行成功,說明把github上的Podsepc檔案更新到本地,那麼會建立~/.cocoapods/repos目錄,並且repos目錄裡有一個master目錄,這個master目錄儲存的就是github上所有第三方開源庫的Podspec索引檔案。

但是第一次執行pod setup時,這個github的Podspec索引檔案比較大,有 300M 左右(以後會越來越大的),所以第一次更新時非常慢.要耐心等待......可以進去目錄~/.cocoapods/repos使用命令du -sh *來檢視下載檔案的大小了

怎麼才能快點呢?網上好多給出都是更換索引庫的映象,gitcafe
和oschina, gitcafe已經被coding收購了(2016年3月份左右收購)。這兩個我親測,現在都不行了(可能是我網速不好,基本上就是連線失敗,有空網速好點的時候我在測試一下)。所以還是別更換 CocoaPods 索引庫的映象了。

三. CocoaPods的使用

1. 新建 Podfile檔案

使用時需要在你的專案根目錄下新建一個名為Podfile的檔案(檔名一定為Podfile,不能更改),將依賴的庫名字依次列在檔案中即可.

  1. //進入專案的根目錄

  2. cd ~/Desktop/Projects/JYCocoaPodsTest

  3. //新建一個名為Podfile的檔案

  4. touch Podfile

2. 編輯 Podfile檔案

CococaPods升級到1.0.0版本之後,Podfile檔案的格式也發生了很大改變
我來帶領大家寫一個完整的Podfile檔案 ,各個選項的解釋在檔案後面一起解釋。

假設我們的專案名稱為JYCocoaPodsTest, 為JYCocoaPodsTest新建了一個UITarget。開啟JYCocoaPodsTest.xcodeproj結構如下:

JYCocoaPodsTest.xcodeproj結構.png

1. 簡單的Podfile:

  1. platform :ios, '7.0'

  2. inhibit_all_warnings!

  3. xcodeproj 'JYCocoaPodsTest'

  4. workspace 'JYCocoaPodsTest'

  5. use_frameworks!

  6. target 'JYCocoaPodsTest' do

  7. pod 'AFNetworking',

  8. pod 'JYCarousel', '0.0.1'

  9. end

2. 稍微複雜的Podfile:

  1. source 'ssh://[email protected]:9830/iOS/Specs.git'

  2. source 'https://github.com/CocoaPods/Specs.git'

  3. platform :ios, '7.0'

  4. use_frameworks!

  5. inhibit_all_warnings!

  6. workspace 'JYCocoaPodsTest'

  7. target 'JYCocoaPodsTest' do

  8. pod 'AFNetworking'

  9. pod 'JYCarousel', '0.0.1'

  10. pod 'WCJCache', :git => "http://gitlab.9ijx.com/iOS/WCJCache.git"

  11. target :JYCocoaPodsTestUITests do

  12. inherit! :search_paths

  13. pod 'YYText'

  14. end

  15. end

3. Podfile的語法解釋:

1. platform :iOS, '7.0'

  • 指定了開源庫應該被編譯在哪個平臺以及平臺的最低版本
  • 若不指定平臺版本,官方文件裡寫明各平臺預設值為iOS:4.3,OS X:10.6,tvOS:9.0,watchOS:2.0

2. inhibit_all_warnings!

  • 遮蔽cocoapods庫裡面的所有警告
  • 這個特性也能在子target裡面定義,如果你想遮蔽某pod裡面的警告也是可以的:
  1. pod 'JYCarousel', :inhibit_warnings => true

3. xcodeproj,現在被project代替,這個變數就別使用了

  • 允許你指定需要連結的工程

4. use_frameworks!
使用frameworks動態庫替換靜態庫連結
(1)swift專案cocoapods 預設 use_frameworks!
(2)OC專案cocoapods 預設 #use_frameworks!

**5. workspace **

  • 指定應該包含所有projects的Xcode workspace.
  • 如果沒有顯示指定workspace並且在Podfile所在目錄只有一個project,那麼project的名稱會被用作於workspace的名稱

6. project

  • 預設情況下是沒有指定的,當沒有指定時,會使用Podfile目錄下與target同名的工程:(我們只有一個工程JYCocoaPodsTest)
    # JYCocoaPodsTest這個Target只有在JYCocoaPodsTest工程中才會連結
    target 'JYCocoaPodsTest' do
    project 'JYCocoaPodsTest'
    ...
    end

5. target 'xxxx' do
** end**

  • 指定特定Target的依賴庫
  • 可以巢狀子Target的依賴庫

6. inherit! :search_paths

  • 明確指定繼承於父層的所有pod,預設就是繼承的

7. source

  • 指定specs的位置,自定義新增自己的podspec。公司內部使用
    cocoapods 官方source是隱式的需要的,一旦你指定了其他source 你就需要也把官方的指定上
    例如:
  1. source 'ssh://[email protected]:9830/iOS/Specs.git'

  2. source 'https://github.com/CocoaPods/Specs.git'

  • 當我們使用pod install或者pod setup時,會自動在~/.cocoapods/repo目錄下更新專案需要的podspec索引檔案如下:

    本地podspec索引檔案.png

4. 依賴庫的基本寫法:

  1. pod 'JYCarousel', //不顯式指定依賴庫版本,表示每次都獲取最新版本

  2. pod 'JYCarousel', '0.01'//只使用0.0.1版本

  3. pod 'JYCarousel', '>0.0.1' //使用高於0.0.1的版本

  4. pod 'JYCarousel', '>=0.0.1' //使用大於或等於0.0.1的版本

  5. pod 'JYCarousel', '<0.0.2' //使用小於0.0.2的版本

  6. pod 'JYCarousel', '<=0.0.2' //使用小於或等於0.0.2的版本

  7. pod 'JYCarousel', '~>0.0.1' //使用大於等於0.0.1但小於0.1的版本,相當於>=0.0.1&&<0.1

  8. pod 'JYCarousel', '~>0.1' //使用大於等於0.1但小於1.0的版本

  9. pod 'JYCarousel', '~>0' //高於0的版本,寫這個限制和什麼都不寫是一個效果,都表示使用最新版本

5. 依賴庫的自定義寫法
下面都會用到podspec檔案,所以要熟悉這個檔案的構成才可以.
我會在下一篇部落格編輯這個檔案

  • Using the files from a local path (使用本地檔案)
  1. pod 'JYCarousel', :path => '/Users/Dely/Desktop/JYCarousel'

我新建一個工程PodTest來演示
1.在podfile寫好依賴路徑

  1. platform :ios, '7.0'

  2. inhibit_all_warnings!

  3. workspace 'PodTest'

  4. target 'PodTest' do

  5. pod 'JYCarousel', :path => '/Users/Dely/Desktop/JYCarousel'

  6. end

2.在你的本地pod庫新增xxx.podspec檔案,(一定要注意是根目錄新增

JYCarousel目錄結構.png


3.編輯xxx.podspec檔案
主要下面紅框點,修改成你的本地路徑:

podspec.png


4.進入專案根目錄進行安裝pod install

PodTest.xcworkspace.png

  • From a podspec in the root of a library repository (引用倉庫根目錄的podspec)
    在倉庫根目錄下加入podsepc檔案上傳到git上就可以了(比較簡單)
  1. 使用倉庫中的master分支:

  2. pod 'JYCarousel', :git => 'https://github.com/Delyer/JYCarousel.git'

  3. 使用倉庫的其他分支:

  4. pod 'JYCarousel', :git => 'https://github.com/Delyer/JYCarousel.git' :branch => 'release'

  5. 使用倉庫的某個tag:

  6. pod 'JYCarousel', :git => 'https://github.com/Delyer/JYCarousel.git', :tag => '0.0.1'

  7. 或者指定一個提交記錄:

  8. pod 'JYCarousel', :git => 'https://github.com/Delyer/JYCarousel.git', :commit => '5e473f1e0530bb3799f2f0d70554b292570bd8f0'

需要特別注意的是,雖然這樣將會滿足任何在Pod中的依賴項通過其他Pods
但是 podspec必須存在於倉庫的根目錄 中,如果根目錄中沒有存在這個podspec檔案,你將不得不使用下面提到的幾種方式之一

  • From a podspec outside a spec repository, for a library without podspec(在一個不帶podsepec的庫裡引用外部的spec)

    如果一個podspec能夠從外部的倉庫源的獲取,設想一下,也通過HTTP來獲取podspec:

  1. pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'

  • pod spec
    使用一個在給定podspec中宣告的Pod的依賴項。如果如果沒有引數被傳遞,那麼在Podfile根部的第一個podspec會被使用。它將會被庫所在的工程所使用
    注意:這個不會包含哪些來自於podspec的資源而僅僅是來自於CocoaPods基礎架構

    例子:

  1. podspec

  2. podspec :name => 'QuickDialog'

  3. podspec :path => '/Documents/PrettyKit/PrettyKit.podspec'

3. 安裝依賴開源庫

第二步中我們編輯好的Podfile檔案儲存好,進入專案根目錄執行命令

  1. //進入專案的根目錄

  2. cd ~/Desktop/Projects/JYCocoaPodsTest

  3. //安裝依賴庫

  4. pod install

pod install.png


pod install命令執行成功後,會看到專案根目錄下多出xxx.xcworkspacePodfile.lock檔案Pods目錄。再看看剛才執行完pod install命令打印出來的內容的最後一行:From now on use CocoaPodsDemo.xcworkspace.提示我們從現在起,我們需要使用JYCocoaPodsTest.xcworkspace檔案來開發。

4. 第三方庫更新

pod install相似的一個命令就是pod update.
如果未指定特定版本的話,pod update將所有第三方框架更新到最新版本。

5. pod檔案和命令說明

-----------------------------新增檔案------------------------------
1. Podfile檔案

專案的第三方庫的依賴以及專案的基本配置

2. Podfile.lock檔案
最後一次更新Pods時, 儲存所有第三方框架的版本號

3. pods目錄
儲存通過pod install或者pod update下載下來的第三方開源庫的原始碼

4. xxx.xcworkspace檔案
重新生成一個工作空間,開啟這個工程檔案來進行開發

-----------------------------常用指令------------------------------
1. pod setup

將所有第三方的Podspec索引檔案更新到本地的~/.cocoapods/repos目錄下,更新本地倉庫。

2. pod repo update
執行 pod repo update更新本地倉庫,本地倉庫完成後,即可搜尋到指定的第三方庫,作用類似pod setup。不過這個命令經常不單獨呼叫。比如執行pod setuppod searchpod installpod update會預設執行pod repo update

3. pod search xxx
查詢某一個開源庫。查詢開源庫之前,預設會執行pod repo update指令

4. pod list
列出所有可用的第三方庫.現在已經2.4W+了.還在不斷地增長

5. pod install

  • 會根據Podfile.lock檔案中列舉的版本號來安裝第三方框架
  • 如果一開始Podfile.lock檔案不存在, 就會按照Podfile檔案列舉的版本號來安裝第三方框架
  • 安裝開源庫之前, 預設會執行pod repo update指令

6. pod update

  • 將所有第三方框架更新到最新版本, 並且建立一個新的Podfile.lock檔案
  • 安裝開源庫之前, 預設會執行pod repo update指令

7. pod install --no-repo-update
8. pod update --no-repo-update

安裝開源庫之前, 不會執行pod repo update指令

四. CocoaPods相關的兩個目錄

  • 目錄~/.cocoapods/repos/這個目錄儲存遠端的podspec檔案到本地。master是所有第三方的pod spec索引檔案。其他的使我們自定義的podspec索引檔案。

~/.cocoapods/repos/目錄.png

  • 目錄~/Library/Caches/CocoaPods/這個目錄就是快取檔案的儲存目錄。

    ~/Library/Caches/CocoaPods/目錄.png

如果我們使用pod search xxx 提示沒有找到,但是我們這個第三方確實存在。
1.我們可以使用pod setup更新本地pod spec索引檔案。然後pod search xxx
2.按照1的方法如果還是pod search xxx找不到,那我們就把~/Library/Caches/CocoaPods/的快取檔案刪除。然後pod setup。最後pod search xxx這樣應該就可以了

五. CocoaPods的說明

1、第三方庫會被編譯成.a靜態庫或者.framwork的動態連結庫供我們真正的工程使用。
CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程,該工程就放在剛才新生成的Pods目錄下。整個第三方庫工程會生成一個名稱為libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。
對於資原始檔,CocoaPods提供了一個名為Pods-resources.sh的bash指令碼,該指令碼在每次專案編譯的時候都會執行,將第三方庫的各種資原始檔複製到目標目錄中。

2、我們的工程和第三方庫所在的工程會由一個新生成的workspace管理
為了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的JYCocoaPodsTest.xcworkspace檔案。

3、原來的工程設定已經被更改了,這時候我們直接開啟原來的工程檔案去編譯就會報錯,只能使用新生成的workspace來進行專案管理。

4、CocoaPods通過一個名為Pods.xcconfig的檔案來在編譯時設定所有的依賴和引數。

六. 總結:

CocoaPods主要還是側重於使用,網速太慢我親測的都有點煩躁了。當然理解原理過程更好,我現在還是有很多地方不是很理解。希望共同努力吧。還是多看看官方文件來學習一下不了解的。如果你喜歡就請點個喜歡吧_

相關推薦

Cocopods安裝使用教程

前言 前幾天釋出我的開源庫<最簡單方便的iOS輪播開源庫:JYCarousel>到CocoaPods的時候。對CocoaPods重新學習了一下,之前只是會簡單的使用,並沒有全面的瞭解。現在要對它做一個學習記錄吧,現在我還是隻會簡單的使用_,教程只是我誇大的說法(

CocoPods安裝使用詳細教程

接下來檢視下源路徑是否更換了 開啟終端,輸入 gem sources -l 源路徑是否已更換 情況一:如果出現 YAML safe loading is not available. Please upgrade psych to a version t

Android 開發之Windows環境下Android Studio安裝使用教程(圖文詳細步驟)

9.png 虛擬機 jdk版本 編寫 clip 開發平臺 集成開發 arc 電腦安裝 鑒於谷歌最新推出的Android Studio備受開發者的推崇,所以也跟著體驗一下。 一、介紹Android Studio Android Studio 是一個Android

redis學習教程一《Redis的安裝配置》

遠程服務 name 工具 列表 端口號 裏的 redis服務器 映射 tin redis學習教程一《Redis的安裝和配置》 Redis的優點 以下是Redis的一些優點。 異常快 - Redis非常快,每秒可執行大約110000次的設置(SET)操作,每秒大約可執

win7下IIS的安裝配置 圖文教程

功能 服務 ges mage net 註冊 png com 服務器 最近想自己用自己的電腦搭一臺服務器,註冊了花生殼,得到了一個免費的域名,然後需要使用IIS服務,我的電腦是Win7的,默認是不安裝IIS的,於是只好先安裝起來 一.首先是安裝IIS。打開控制面板,打開“程序

1、koala軟件的安裝使用--less教程

技術分享 demo pan lin target body koa app 密碼 最近在學習less,感覺可以編譯的CSS真是爽,懶人必備。 1、我這裏使用到koala軟件來編譯less文件生成CSS。 附上百度網盤下載鏈接: 下載鏈接         密碼:

jupyter(ipython notebook) 安裝入門教程

回車 pandas 可能 IT com .com http python2 width 近期大家無論是自己做數據分析還是緊急答辯做PPT,可能都需要畫一些數據的展示圖;以前大家都是用excel畫圖,但excel畫圖存在一定的局限性,比如你要畫個累積直方圖,excel就很

Oracle 11g數據庫安裝卸載教程

manager 路徑 內存 size alc ftw 單例 code ice Oracle11g的安裝教程 同時解壓縮兩個zip文件,生成一個database文件夾,進入到database文件夾,點擊setup 去掉安全更新的選項,直接下一步 選擇創建和配置數

安裝Linux教程使用putty進行遠程連接

putty VMWare 安裝Linux教程和使用putty進行遠程連接 使用VMwareWorkstationPro創建新的虛擬機,如圖所示:點擊“創建新的虛擬機”進入到如下界面,選擇自定義即可: 直接點擊下一步即可:之後會進入到如下界面(可以直接選擇安裝程序光盤映像文件,這裏是稍後安裝,先用虛

putty的下載安裝基本使用方法教程

putty putty下載 putty安裝 putty基本使用教程 putty入門 PuTTY是一款開源(Open Source Software)的連接軟件,主要由Simon Tatham維護,使用MIT許可證授權。包含的組件有:PuTTY, PuTTYgen,PSFTP, PuTTYt

013-PowerDesigner 16.5 安裝卸載教程【包含下載地址】

應用程序 font idt out 文件 權限 des bubuko 但是 1 下載 下載地址:https://pan.baidu.com/s/1kqly0d8qU-QluEagXwh53g 密碼:n1a3 下載之後目錄結構如下: 2 安裝教程 1 安裝 1

Git 安裝使用教程(轉載)

教程 不同的 時間 sdn 開發 .com 代碼 安裝 com 轉載:https://www.cnblogs.com/smuxiaolei/p/7484678.html Git介紹 分布式:Git版本控制系統是一個分布式的系統,是用來保存工程源代碼歷史狀態的命令行工具。

楊澤業:linux遠程桌面連接軟件xshellftp軟件xftp安裝圖文教程

語言 nbsp rgb none 上傳 orm 進入目錄 壓縮文件 windows 在linux系統中,Xshell和Xftp配合使用,是一套非常方便的linux服務器管理軟件。xshell是通過輸入命令來對服務器進行操作,如進入目錄,壓縮文件,解壓文件,啟動服務等等。Xf

Python3 turtle安裝使用教程

canvas 範圍 復制 準備 make col -o lee got Turtle庫是Python語言中一個很流行的繪制圖像的函數庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的

Spring Boot基礎教程》 第1節工具的安裝使用

article pac java upd ips help 如何快速 安裝 nbsp 《Spring Boot基礎教程》 第1節 工具的安裝和使用 Spring Boot文檔 https://qbgbook.gitbooks.io/spring-boot-reference

JAVA的下載與安裝環境變量配置等詳細教程

bin 命令提示符 1.3 學習 1.7 常常 表示 最新 edi 初學JAVA時,新手常常不知如何下載JAVA,也不知如何安裝JAVA以及對JAVA配置環境變量。近期學弟學妹常請教我如何下載安裝和配置JAVA,於是寫下此博文以便更多新手快速入門,由於我本人是玩智能車的,因

Adobe Photoshop CC 2107安裝破解教程

首先下載Adobe Photoshop CC 2107,百度雲盤地址:                   &n

PyCharm的安裝使用教程(蒐羅網上大神帖子彙總)

首先是我自己的經驗 安裝第一次各種問題!就不多了,反正各種報錯 原因是當前使用者的名字是中文!在建立檔案的時候,路徑裡不能有中文 解決方案 首先新增管理員 https://jingyan.baidu.com/article/fdffd1f87f7d6ff3e98c

Python 基礎全套教程 :01環境的安裝使用

Python環境搭建 Python可應用於多平臺包括Windows、 Linux/Unix 和 Mac OS。 Python下載 Python最新原始碼,二進位制文件,新聞資訊等可以在Python的官網檢視到: Python官網:http://www.py

Django2.1入門教程(一)django2.1的安裝使用

1、Django簡介 Django是使用python語言開發的一套免費開源的後臺web框架,主要為前端html提供後臺資料支援,後臺專案的執行需要依託於伺服器,從而接收前端傳送的請求,後臺予以響應。 Django提供了一個測試伺服器,是執行在本地電腦之上的。 2005年7月份釋出,2008年