一.介紹
(1) CocoaPods是一個用來幫助咱們管理第三方依賴庫的工具。它能夠解決庫與庫之間的依賴關係,下載庫的源代碼,同時經過建立一個Xcode的workspace來將這些第三方庫和咱們的工程連接起來,供咱們開發使用。
(2) 使用CocoaPods的目的是讓咱們能自動化的,集中的,直觀的管理第三方開源庫。
(3) CocoaPods是用Ruby實現的,想要使用它首先須要有Ruby的環境。
(4) CocoaPods是以Ruby gem包的形式被安裝。
(5) CocoaPods的原理是將全部的依賴庫都放倒另外一個名爲Pods的項目中,而後讓主項目依賴Pods項目,這樣,源碼管理工做都從主項目移動到了Pods項目中。Pods項目最終會編譯成一個名爲libPods.a的文件,主項目只須要依賴這個.a文件便可。ios
二.使用
1.CocoaPods的安裝
須要用到ruby,Mac系統自帶ruby,但若是不是最新的系統,最好更新一下。
ruby的軟件源rubygems.org被牆了,因此先換一下源,命令行下依次執行3條命令
git
$ gem sources –remove https://rubygems.org/
$ gem sources -add htts://gems.ruby-china.com/
$ gem sources -l
而後升級gem github
$ sudo gem update -–system
完了就開始安裝CocoaPods shell
$ sudo gem install cocoapodspod setup
出現Setting up CocoaPods master repo,半天沒有任何反應。緣由無他,由於那堵牆阻擋了cocoapods.org。。。
gitcafe和oschina都是國內的服務器,能夠用它們CocoaPods索引庫的鏡像:
vim
$ pod repo removemaster pod repo add master https://gitcafe.com/akuandev/Specs.git $ pod repo update
若是想用oschina的鏡像也能夠把第二條命令 換成 http://git.oschina.net/akuandev/Specs.git 便可xcode
第二條命令執行的時候會比較耗時,這個時候要去把整個specs倉庫clone一下,下載到 ~/.cocoapods裏;
cd 到該目錄裏,用du -sh *命令來查看文件大小,每隔一會看看,最終大小是190多M。ruby
2.CocoaPods的使用服務器
(1) 在終端shell中cd 來到你要管理的項目,運行:pod install 你的工程就多了個xworkspace文件夾,之後用這個打開工程
(2) 添加第三方庫
curl
搜索一個開源庫 podsearchAFNetworking在工程目錄裏建一個Podfile文件 vim Podfile
內容按這個格式來
svn
platform :ios,’6.0’ pod ‘RegexKitLite’, ‘~> 4.0’ pod ‘ASIHTTPRequest’, ‘~> 1.8.2’ pod ‘SDWebImage’, ‘~> 3.7.1’ pod ‘FMDB’, ‘~> 2.3’
3.CocoaPods的使用心得
(1) 最近使用CocoaPods來添加第三方類庫,不管是執行pod install仍是pod update都卡在了Analyzing dependencies不動 緣由在於當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數能夠省略這一步,命令以下:
$ pod install –verbose –no-repo-update
$ pod update –verbose –no-repo-update
podinstall 只會按照Podfile的要求來請求類庫,如果類庫版本號有變化,那麼將獲取失敗。但是 pod update會更新全部的類庫,獲取最新版本的類庫。每次用$ pod update就行。
(2) 安裝一個xcode插件管理工具 http://alcatraz.io,執行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh 完了打開xcode->window->package manger 搜cocoapods安裝,方便操做。
(3) 工程在模擬器上編譯報錯,不支持i386,Cocoapods確實還不支持64位模擬器,解決辦法:
http://stackoverflow.com/questions/19213782/undefined-symbols-for-architecture-arm64
其實就2條,1.build active architecture only 在debug的時候設置成YES,不要在release的時候用模擬器 2.other linker flags 加一個 $(inherited)
(4) 用到svn,git多人協做的話,Pods/這個文件夾不要上傳,…/Pods/Pods.xcodeproj …Pods/Target Support Files/這些每次編譯都會改動從而引發合併代碼的時候衝突
更多坑能夠看wiki,例如 https://github.com/CocoaPods/CocoaPods/issues/2190 其餘坑各位能夠補充。。。