我們開發的時候,常常需要引入一些第三方庫(比如:Alamofire、SwiftyJSON 等等)。過去的做法是把這些庫下載下來,並引入到工程中。如果有依賴其他庫的話,還要手動將這些依賴庫給添加進來。關鍵是如果這些第三方庫後面有更新的話,我們還要先把項目中原來的庫給刪除。再重復前面的步驟。這樣就很麻煩了。
而使用 CocoaPods 以後,這些工作我們都不需要做。只需做好配置工作,安裝更新這些第三方庫,CocoaPods 都會自動幫我們做好。
一、CocoaPods介紹
(1)CocoaPods 是 ios 開發中的第三方庫管理的工具。目的是讓我們能自動化的、集中的、直觀的管理第三方開源庫。
(2)CocoaPods 能夠自動解決庫與庫之間的依賴關系,下載庫的源代碼。並創建一個 Xcode 的 workspace 來將這些第三方庫和我們的工程連接起來,供我們開發使用。
二、安裝CocoaPods
1,將gem升級為最新版本
sudo gem update --system
2,運行如下命令安裝CocoaPods
sudo gem install -n /usr/local/bin cocoapods
接著執行如下命令,如果沒有報錯,就說明一切安裝成功了。(這個執行後要等上一段時間,Cocoapods 在將它的信息下載到 ~/.cocoapods 裡。大概有100多兆。)
1
pod setup
3,安裝後執行如下命令查看版本
pod --version
原文:Swift - CocoaPods的安裝使用詳解(自動安裝管理第三方庫)
4,以後要更新升級CocoaPods,執行如下命令
sudo gem update cocoapods
三、CocoaPods安裝失敗的原因和解決辦法
1,執行install後一直沒反應,無法安裝
有時你會發現執行 install 命令後一直沒有反應。這是因為 Ruby 的默認源使用的是 rubygems.org。由於國內網絡原因,訪問這上面的資源文件會間歇性連接失敗。
(1)我們可以執行如下命令,將源改成使用淘寶提供的 rubygems.org 鏡像
1
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
(2)接著執行下面命令,確保只有 ruby.taobao.org
gem sources -l
(3)最後再使用 install 就能成功安裝 CocoaPods 了。
2,Ruby版本太低
如果本機 Ruby 的版本過低也可能導致安裝失敗。
(1)安裝 rvm(rvm 可以讓我們擁有多個版本的 Ruby,並且可以在多個版本之間自由切換。)
1
2
curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
(2)完畢後執行如下命令,如果出現版本號則說明 rvm 安裝成功。
rvm -v
(3)執行 rvm list known 命令可以列出所有 ruby 可安裝的版本信息。
(4)我們安裝一個 ruby 版本
rvm install 2.2.4
(5)並將其設置為默認版本。這時我們應該就可以正常安裝 CocoaPods 了。
1
rvm use 2.2.4 --default
(6)使用 rvm list 命令可以查看已安裝的 ruby
(7)如果要卸載一個已安裝 ruby 版本,執行如下命令。
rvm remove 2.1.4
四、CocoaPods的使用
下面我們創建一個工程項目(假設工程名是 hangge_1358),演示如果使用 CocoaPods 自動下載、導入、配置第三方庫。
1,創建Podfile
首先進入到工程的根目錄下,創建空白的Podfile 文件。
cd /Users/hangge/Documents/Code/hangge_1358
touch Podfile
原文:Swift - CocoaPods的安裝使用詳解(自動安裝管理第三方庫)
2,編輯Podfile
我們在 Podfile 文件中寫上需要引入的第三方庫,這裡以 Alamofire、SwiftyJSON 這兩個庫為例。
platform :ios, '8.0'
use_frameworks!
target 'hangge_1358’ do
pod 'Alamofire'
pod 'SwiftyJSON'
end
3,開始導入庫
(1)執行下面命令,開始導入前面配置的第三方庫。
cd /Users/hangge/Documents/Code/hangge_1358
pod install
(2)執行成功後。看到工程根目錄下多了三個新文件:hangge_1358.xcworkspace、Podfile.lock 文件、Pods 目錄。
原文:Swift - CocoaPods的安裝使用詳解(自動安裝管理第三方庫)
4,打開新生成的hangge_1358.xcworkspace
(1)往後我們就需要使用這個新生成的 hangge_1358.xcworkspace 文件來開發。因為原來的工程(hangge_1358.xcodeproj)設置已經被更改了,如果我們直接打開原來的工程文件去編譯就會報錯。
(2)打開後可以看到裡面除了我們項目工程,還有一個 Pods 工程。整個結構還是很清晰明了的。
原文:Swift - CocoaPods的安裝使用詳解(自動安裝管理第三方庫)
5,測試代碼
開發時,我們只需要在使用的時候 import 一下需要的庫就可以了。
import UIKit
import Alamofire
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.GET, "")
.responseString { response in
print("Success: \(response.result.isSuccess)")
print("Response String: \(response.result.value)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
6,新增或移除第三方庫
以後如果需要在工程中導入新庫,或者移除原有的庫。還是先編輯 Podfile 文件,再執行 install 命令。
pod install
7,更新第三方庫
如果引用的庫沒有改變,只是想要將這些庫更新到最新版本,則執行 update 命令。
pod update
五、導入Objective-C寫的第三方庫
上面的樣例我們是創建工 Swift 工程,並導入 Swift 語言寫的第三方庫。如果想要在 Swift 工程中引入 OC 寫的第三方庫,操作也是一樣的。而且我們項目中不需要像過去一樣創建橋接頭文件,把Objective-C頭文件引用進來。
這裡以 OC 寫的圖片緩存庫:SDWebImage 為例說明。
platform :ios, ‘8.0’
use_frameworks!
target 'hangge_1358’ do
pod 'Alamofire'
pod 'SwiftyJSON'
pod 'SDWebImage'
end
2,執行安裝命令
pod install
3,代碼中直接將SDWebImage庫import就能使用
import UIKit
import SDWebImage
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let imageView = UIImageView()
imageView.frame=CGRectMake(10,10,130,27.5)
let url = NSURL(string: "/blog/images/logo.png")
imageView.sd_setImageWithURL(url)
self.view.addSubview(imageView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}