這一段做項目會用到一些開源庫比如VLC窘拯,七牛云存儲都是需要用CocoaPods才能運行,索性把這個總結(jié)一下
通過CocoaPods,我們可以將第三方的依賴庫統(tǒng)一管理起來烹吵,配置和更新只需要通過簡單的幾行命令即可完成,大大的提高了實際開發(fā)中的工作效率毛甲,使我們的主要精力集中到更重要的事情上去年叮。
1.安裝CocoaPods
安裝CocoaPods之前,先確保本地有Ruby環(huán)境玻募,因為CocoaPods運行于Ruby之上只损,默認情況下,Mac是自帶了Ruby環(huán)境的,可以通過命令行ruby -v查看當前Ruby的版本
接下來我們就可以通過如下命令安裝CocoaPods了跃惫。
- $?sudo?gem?install?cocoapods
輸入上述命令后可能會無響應(yīng)叮叹,那是因為你身在天朝,偉大的墻攔住了你的去路爆存,
不過沒關(guān)系蛉顽,我們可以通過淘寶的Ruby鏡像來訪問Cocoapods,在終端輸入如下命令將Ruby鏡像替換為淘寶的先较。替換方式如下:
$?gem?sources?--remove?https://rubygems.org/??
//等有反應(yīng)之后再敲入以下命令??
$?gem?sources?-a?http://ruby.taobao.org/??
要想驗證是否替換成功了携冤,可以執(zhí)行:$?gem?sources 1 正常的輸出是:
***?CURRENT?SOURCES?***???
http://ruby.taobao.org/???
接下來就可以重新運行安裝命令來安裝CocoaPods了,根據(jù)你的網(wǎng)絡(luò)情況闲勺,幾秒或十幾秒后安裝過程就完成了曾棕,總的來說,安裝過程還是比較簡單的
2.安裝過程中可能遇到的問題
(1)gem版本過老
gem是管理Ruby庫和程序的標準包菜循,如果它的版本過低也可能導(dǎo)致安裝失敗翘地,解決方案自然是升級gem,執(zhí)行下述命令即可:$?sudo?gem?update?--system?
(2)安裝完成后執(zhí)行pod setup命令時報錯
/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>'
這就是路徑設(shè)置的問題癌幕,可以通過執(zhí)行:$?rvm?use?ruby-1.9.3-p448??
正確安裝后的結(jié)果是
3.使用CocoaPods
通過集成Qiniu類庫來演示如何使用CocoaPods來做依賴庫管理衙耕。首先,建立一個xcode工程勺远,命名為CocoaPodsTestDemo
這里我們要集成Qiniu橙喘,可以先通過如下命令來判斷其是否支持CocoaPods
$?pod?search Qiniu
檢測完畢后我們來到工程CocoaPodsTest的目錄下,新建一個名為Podfile的文件(這里通過命令行創(chuàng)建)
$?vim?Podfile
這個Podfile文件的作用是配置依賴庫信息胶逢,就是告訴CocoaPods去下載和管理哪些依賴庫渴杆,文件創(chuàng)建好以后,打開文件并加入如下內(nèi)容宪塔。(vim打開文件后按i進入插入模式磁奖,編輯完成后按esc退出編輯模式,接著輸入:wq保存并退出文件)
這時候某筐,工程目錄下就會有一個Podfile文件了比搭,注意必須和.xcodeproj在同一個目錄下。接下來就可以使用CocoaPods來安裝并管理Qiniu庫了南誊,確保命令行當前路徑是在CocoaPodsTest目錄下身诺,運行如下命令。
$?pod?install
安裝完成后會提示如下信息抄囚,并且我們的工程目錄下會多出一個.xcworkspace結(jié)尾的文件霉赡,命令行信息綠色部分提醒我們“從此使用CocoaPodsTest.xcworkspace來打開項目”。
通過CocoaPodsTest.xcworkspace來打開項目幔托,這時穴亏,我們的項目工程結(jié)構(gòu)就會變成下圖這樣蜂挪,多出一個名為Pods的依賴工程,打開Pods文件夾后嗓化,發(fā)現(xiàn)Qiniu已經(jīng)在里面了
這時候就可以在項目文件中引入QiniuSDK.h了棠涮,這時候如果你發(fā)現(xiàn)import的時候沒有提示QiniuSDK的文件,可以在target-Build Settings下修改“User Header Search Paths”項刺覆,新增${SRCROOT}并選擇rcursive严肪,如下圖。
設(shè)置完成后就可以在文件中直接引用第三方庫的文件并使用了谦屑。
到此驳糯,新建工程并使用CocoaPods來管理依賴庫的過程就完成了,如果是直接使用已有CocoaPods的項目氢橙,則需要首先運行一下pod update命令來更新項结窘,然后照樣通過.xcworkspace來打開工程。
如果需要依賴多個第三方類庫充蓝,只需要修改Podfile文件的配置,然后運行pod update命令即可喉磁,比如新增一個MBProgressHUD的依賴庫谓苟,首先執(zhí)行pod searchMBProgressHUD 查看一下MBProgressHUD的配置信息,修改Podfile文件协怒,在后面增加MBProgressHUD的對應(yīng)配置信息涝焙,然 后運行pod update命令就完成了對MBProgressHUD的集成。
如果類庫有更新孕暇,查看更新配置并執(zhí)行pod update即可簡單完成了仑撞,從此從手動更新繁重的體力勞動中解脫出來
簡單小結(jié)一下:
安裝CocoaPods
新建項目并在工程根目錄下新建Podfile文件,配置需要管理的第三方庫
運行pod install下載安裝第三方庫
**********************************************************************
1.安裝CocoaPods
(1)先確保本地有Ruby環(huán)境 CocoaPods運行在Ruby環(huán)境之上 mac自帶有
查看當前Ruby環(huán)境? ruby -v
(2)終端輸入如下命令(把Ruby鏡像指向taobao妖滔,避免被墻)
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources 1
2.下載安裝CocoaPods
sudo gem install cocoapods 輸入電腦密碼
Successfully installed cocoapods-0.39.0 說明已經(jīng)成功
3.使用CocoaPods
(1)先通過命令看是否支持 pod search AFNetworking
(2)檢測完畢后我們來到工程CocoaPodsTest的目錄下隧哮,新建一個名為Podfile的文件
vim Podfile
這個Podfile文件的作用是配置依賴庫信息,就是告訴CocoaPods去下載和管理哪些依賴庫座舍,文件創(chuàng)建好以后沮翔,打開文件并加入如下內(nèi)容。(vim打開文件后按i進入插入模式曲秉,編輯完成后按esc退出編輯模式采蚀,接著輸入:wq保存并退出文件)
platform :ios, ‘7.0’
pod ‘AFNetworking’, ‘~> 2.6.3’
(3)這時候,工程目錄下就會有一個Podfile文件了承二,注意必須和.xcodeproj在同一個目錄下榆鼠。接下來就可以使用CocoaPods來安裝并管理AFNetworking庫了,確保命令行當前路徑是在CocoaPodsTest目錄下亥鸠,運行如下命令妆够。
pod install
(4)如果再添加其他的? 就 執(zhí)行pod update
**************************************************************************************************
問題描述:使用cocoapods時,import 找不到頭文件。
問題原因:這是因為還沒設(shè)置頭文件的目錄责静。
解決辦法:在項目的Target的里設(shè)置一下袁滥,添加cocoapods頭文件目錄:目錄路徑直接寫:${SRCROOT} ? ,后邊選擇recursive 灾螃。就可以了题翻。
注意:是在 User Header Search Paths 里添加,不是上面的 Header Search Paths.