哈哈哈?
首先說一下關于pod的命令語句
1. 在命令行中進入到當前的工程的文件夾
簡單說下命令行的幾個用法:
cd + 空格 + 文件名 = 進入文件夾
cd + 空格 + .. = 返回上一級目錄
pwd 查看當前目錄
2.打開?Podfile文件:open -e Podfile ?保存退出:commond+s
3.進行編輯模式:vi?Podfile ??按下“i”,進入編輯模式,把光標移動到需要的位置,輸入下面的指令
例如:
target '你的項目名' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
end(一定要加end,否則會報錯)
4.按下”esc”+”shift”+”;” ? ?或”esc”+“:” ?退出編輯模式
輸入“wq”,回車,退出vi編譯器
一:正文
1.為什么需要CocoaPods
在進行iOS開發的時候,總免不了使用第三方的開源庫,比如SBJson、AFNetworking、Reachability等等。使用這些庫的時候通常需要:
下載開源庫的源代碼并引入工程
向工程中添加開源庫使用到的framework
解決開源庫和開源庫以及開源庫和工程之間的依賴關系、檢查重復添加的framework等問題
如果開源庫有更新的時候,還需要將工程中使用的開源庫刪除,重新執行前面的三個步驟,頓時頭都大了。。。
自從有了CocoaPods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,CocoaPods會為我們做好一切!
2.什么是CocoaPods
CocoaPods是一個用來幫助我們管理第三方依賴庫的工具。它可以解決庫與庫之間的依賴關系,下載庫的源代碼,同時通過創建一個Xcode的workspace來將這些第三方庫和我們的工程連接起來,供我們開發使用。
使用CocoaPods的目的是讓我們能自動化的、集中的、直觀的管理第三方開源庫。
3.核心組件
CocoaPods是OS X和iOS下的一個第三類庫管理工具,通過CocoaPods工具我們可以為項目添加被稱為“Pods”的依賴庫(這些類庫必須是CocoaPods本身所支持的),并且可以輕松管理其版本。
Cocoapods意義體現在兩個方面。第一,在引入第三方庫時它可以自動為我們完成各種各樣的配置,包括配置編譯階段、連接器選項、甚至是ARC環境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方庫,這些類庫是比較“標準的”,而不是網上隨便找到的,這樣可以讓我們找到真正好用的類庫。
接下來我們將介紹CocoaPods的使用。
CocoaPods的核心組件
CocoaPods是用Ruby寫的,并劃分成了若干個Gem包。
CocoaPods在解析執行過程中最重要的幾個包的路徑分別是:CocoaPods/CocoaPods、CocoaPods/Core和CocoaPods/Xcodeproj。
CocoaPods / CocoaPod:這是面向用戶的組件,每當執行一個pod命令時,這個組件將被激活。它包括了所有實用CocoaPods的功能,并且還能調用其他gem包來執行任務。
CocoaPods / Core:Core gem提供了與CocoaPods相關的文件(主要是podfile和podspecs)的處理。
Podfile:該文件用于配置項目所需要的第三方庫,它可以被高度定制。本文中我們主要在這里做動作。
Podspec:該文件描述了一個庫將怎樣被添加進工程中。.podspec文件可以標識該第三方庫所需要的源碼文件、依賴庫、編譯選項,以及其他第三方庫需要的配置。
CocoaPods / Xcodeproj:這個包負責處理工程文件,它能創建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作為一個獨立的包使用,當你要編寫修改項目文件的腳本時,可以考慮使用CocoaPods/Xcodeproj。
二、安裝
由于網上的教程基本都大同小異,但細節之處還不是很完善,所以借機會在這里補充下:
注:要使用CocoaPods,那就要下載安裝它,而下載安裝CocoaPods需要Ruby環境
1、Ruby環境搭建
當前安裝環境為Mac mini 10.8.5。Mac ?OS本身自帶Ruby,但還是更新一下保險,因為我第一次安裝在沒有更新Ruby的情況下就失敗了。
a 查看下當前ruby版本:打開終端輸入 ruby -v(確實安裝了,不過用這個版本接下來工作失敗了,所以更新下ruby)
ritekiMac-mini:PodTest?lucky$?ruby?-v
ruby1.8.7?(2012-02-08?patchlevel358)?[universal-darwin12.0]
ritekiMac-mini:PodTest?lucky$
b 更新ruby
終端輸入如下命令(把Ruby鏡像指向taobao,避免被墻,你懂得)
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l ?(用來檢查使用替換鏡像位置成功)
ritekiMac-mini:~?lucky$?gem?sources?--removehttps://rubygems.org/
https://rubygems.org/?removed?from?sources
ritekiMac-mini:~?lucky$?gem?sources?-ahttps://ruby.taobao.org/
https://ruby.taobao.org/?added?to?sources
ritekiMac-mini:~?lucky$?gem?sources?-l
***?CURRENTSOURCES?***
2、下載安裝CocoaPods
終端輸入:sudo gem install cocoapods
ritekiMac-mini:~?lucky$?sudo?gem?install?cocoapods
CHANGELOG:
##?0.32.1
#####?Bug?Fixes
*?Fixed?the?Podfile?`default_subspec`?attribute?in?nested?subspecs.
[Fabio?Pelosin][irrationalfab]
\?[#2050](https://github.com/CocoaPods/CocoaPods/issues/2050)
Successfully?installed?cocoapods-0.32.1
Installing?ri?documentation?for?cocoapods-0.32.1
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280:?warning:?conflicting?chdir?during?another?chdir?block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287:?warning:?conflicting?chdir?during?another?chdir?block
Done?installing?documentation?for?cocoapods?after?10?seconds
1?gem?installed
這樣就下載安裝好了CocoaPods
3、使用CocoaPods
a ?新建一個項目,名字PodTest
b ?終端中,cd到項目總目錄(注意:包含PodTest文件夾、PodTest.xcodeproj、PodTestTest的那個總目錄)
cd?/Users/lucky/Desktop/PodTest
c ?建立Podfile(配置文件)
接著上一步,終端輸入?vim Podfile
鍵盤輸入 i,進入編輯模式,輸入
platform :ios, '7.0'
pod 'MBProgressHUD', '~> 0.8'
然后按Esc,并且輸入“ :”號進入vim命令模式,然后在冒號后邊輸入wq
注意:鍵盤輸入 :后,才能輸入wq。回車后發現PodTest項目總目錄中多一個Podfile文件
首先進入工程根目錄,然后執行pod install命令,CocoaPods就開始為我們做下載源碼、配置依賴關系、引入需要的framework等一些列工作,命令的執行結果打印出來如下:
查看項目根目錄:
注意:現在打開項目不是點擊 PodTest.xodeproj了,而是點擊?PodTest.xcworkspace
對于工程發生的變化,有幾點需要說明:
第三方庫會被編譯成靜態庫供我們正真的工程使用
CocoaPods會將所有的第三方庫以target的方式組成一個名為Pods的工程,該工程就放在剛才新生成的Pods目錄下。整個第三方庫工程會生成一個名稱為libPods.a的靜態庫提供給我們自己的CocoaPodsTest工程使用。
我們的工程和第三方庫所在的工程會由一個新生成的workspace管理
為了方便我們直觀的管理工程和第三方庫,CocoaPodsTest工程和Pods工程會被以workspace的形式組織和管理,也就是我們剛才看到的CocoaPodsTest.xcworkspace文件。
原來的工程設置已經被更改了,這時候我們直接打開原來的工程文件去編譯就會報錯,只能使用新生成的workspace來進行項目管理。
打開項目后看到項目結構并且測試一下:
在項目中引用剛才添加的第三方庫的頭文件,執行編譯操作,果斷成功!
運行結果:
補充:
1、CocoaPods的基本安裝及使用都詳細的說明了,但還有一些補充,當需要同時導入多個第三方時候怎么辦 ?
這就需要修改Podfile了,就是用vim編輯的那個保存在項目根目錄中的文件,修改完了Podfile文件,需要重新執行一次pod install命令。
例如:
platform :ios
pod 'JSONKit', ? ? ? '~> 1.4'
pod 'AFNetworking',? '~> 2.0'
2、CocoaPods可以查找你想要的第三方庫
終端輸入命令:pod search UI
瘋了了,我怎么查找這么大眾的關鍵字,好多庫~~
然后重新編輯Podfile文件,按照之前的步驟,把更多的庫都導入項目!
錯誤總結
1.執行"pod install (如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行?pod install --verbose --no-repo-update?或者?pod install --no-repo-update"
#pragma mark -?注意如果在pod install之后出現Creating shallow clone of spec repo `master-1` from `https://github.com/CocoaPods/Specs.git`卡死情況,就在執行pod install之前執行pod setup
2. 現在,你的所有第三方庫都已經下載完成并且設置好了編譯參數和依賴,你只需要記住如下?2點即可:
使用?CocoaPods生成的?.xcworkspace文件來打開工程,而不是以前的?.xcodeproj?文件。
每次更改了?Podfile文件,你需要重新執行一次"pod update命令。(如果終端出現updating local specs repositories,那么請用ctrl+c強制結束命令進程,然后執行pod update --verbose --no-repo-update或者pod update --no-repo-update"
"pod setup時報錯解決辦法"
出錯:pod setup的時候報錯,?argumenterror , syntax error on line 4, col 0: `min:0.29.0`
解決方法如下:
1.命令行運行
# -rf ~/.cocoapods/repos
# pod setup(這個我還是沒成功,報錯ruby里什么找不到文件,于是我更新ruby,如果你成功了,就不用了)
2.更新ruby
xcode->preference->download里安裝Command Line Tools
安裝rvm:命令行里運行
$ curl -L get.rvm.io | bash -s stable
等待,運行
$ source ~/.bashrc
$ source ~/.bash_profile
查看安裝
$ rvm -v
升級ruby:
$ rvm install ruby 2.1.1
ruby升級好了,查看版本?$ ruby -v
3.我ruby安裝又失敗了,于是谷歌
Error running 'requirements_osx_port_update_system ruby-2.1.1',
根據一篇文章,我又繼續了,命令行里
$ sudo port -v selfupdate
結果有出錯了,$ sudo:port:command not faund
于是一番搜索,
$ export PATH=$PATH:/opt/local/bin
$ source .profile
升級macports
$sudo port -v selfupdate
終于可以升級ruby了,
$ rvm install 2.1.1
成功,于是,下一步
$ sudo gem install cocoapods
成功
4.重新運行
$? pod setup
成功
關注:http://www.lxweimin.com/p/dfe970588f95
錯誤總結
使用CocoaPod出現-bash: pod: command not found ”的問題,倘若不想移除一遍已安裝的CocoaPods
先運行
sudo gem install -n /usr/local/bin cocoapods
不行再運行
sudo chmod +rx /usr/local/bin
在項目中移除CocoaPods
如果你覺得CocoaPods讓你的項目出現了問題,不好用甚至是惡心,想將其從項目中徹底移除,也有方法:
1.刪除工程文件夾下的Podfile、Podfile.lock和Pods文件夾。
2.刪除xcworkspace文件。
3.打開xcodeproj文件,刪除項目中的Pods文件夾及Pods.xcconfig引用和libpods.a:
4.打開Build Phases選項,刪除Check Pods Manifest.lock和Copy Pods Resources,以及Embeded Pods Frameworks:
5.完成,編譯運行,無錯通過。
總結
從項目中移除某個類庫直接修改" Podfile "文件即可,但是移除整個CocoaPods就有點麻煩了,或許有其他方法。
另外,如果在編輯工程時不小心刪除了某個文件,如Podfile.lock,那么我們就要用上面的方法先移除整個CocoaPods,然后重新建立Podfile和使用pod install命令重裝CocoaPods。
學習參考資源:https://www.cnblogs.com/oc-bowen/p/5251668.html