iOS包管理工具Cocoapods的安裝與使用
在我們開發移動應用的時候,一般都會使用到第三方工具,而由於第三方類庫的種類繁多,我們在專案中進行管理也會相對麻煩,所以此時我們就需要一個包管理工具,在iOS開發中,我們使用最多的就是Cocoapods。
Cocoa是開發OS X下的蘋果提供的API,Cocoa Touch是開發iOS觸控類裝置的API。比如我們在開發iOS中,常常需要新建一個類,就是用Cocoa Touch Class來進行新建的。在本篇部落格中我們將會討論包管理工具Cocoapods的安裝與使用。
【一.Cocoapods的安裝】
(1)Cocoapods的官方網站為: https://cocoapods.org/ 。如果你的電腦已經安裝了Ruby開發環境,那麼在終端(Terminal)中使用以下命令即可直接安裝:
sudo gem install cocoapods
(2)如果你的電腦還沒有安裝Ruby環境,請看以下步驟:首先安裝RVM,即Ruby的虛擬機器,類似JVM,執行如下命令即可:
curl -L https://get.rvm.io | bash -s stable
(3)重新載入RVM,或者重開終端Terminal也可:
source ~/.rvm/scripts/rvm
(4)檢查RVM是否安裝成功,並檢視RVM的版本:
rvm -v
(5)然後使用RVM安裝Ruby環境:
rvm install 2.0.0
(6)檢視Ruby的版本:
ruby -v
(7)安裝Ruby的時候預設會安裝gem,我們也可以檢視gem的版本:
gem -v
(8)下面開始安裝Cocoapods,由於有牆,所以我們要修改Ruby的映象,恰巧某寶提供了這個映象:首先移除原來的映象:
gem sources --remove https://rubygems.org/
如果gem太老,可以嘗試使用如下命令升級gem:
$ sudo gem update --system
(9)然後增加新的映象:
gem sources -a https://ruby.taobao.org/
(10)檢視當前的Ruby映象,如果顯示是taobao.org就可以了:
gem sources -l
(11)這是最後一步,安裝cocoapods:稍等片刻就可以了;
sudo gem install cocoapods
(12)在較早的版本中,執行完(11)後cocoapods就安裝完了。最近還需要執行setup命令:
pod setup
到此為止,cocoapods就安裝完成了。但是在實際安裝過程中,會出現各種問題和異常,對於出現的問題解決方案,請參考【三.安裝過程中的異常問題解決 】【二.Cocoapods的使用】
(1)首先建立一個iOS專案,我以Swift語言為例,我取名為CocoapodsDemo。當前的目錄結構如下:
。
(2)在終端下進入這個專案的根目錄,使用vim建立一個Podfile檔案,如圖:注意,這個名字一定要是Podfile,不能是其他名字!!!
.
(3)然後在Podfile中輸入如下程式碼,其中我以AFNetworking為例:儲存退出。
注意:這裡可以直接寫(這是最簡單的寫法):
platform:ios
pod 'AFNetworking'
也就是說ios後面可以不加版本號,ios三個字母都必須是小寫,不能寫成“iOS”!!!
個人建議:
我習慣在iOS後面指定版本號,目前我一般設定為‘8.0’,這樣就可以適配多個版本。
然後其實每一個第三方框架也都是有版本號的,可以通過pod search *** 來檢視歷史版本(我下面會提到),個人建議也是最好能指定某個穩定的版本號,這樣可以防止以後執行pod update命令時總是更新到最新版(這是沒有必要的),也會造成版本的不統一。如果你不指定第三方庫的版本號,預設就是最新版本。下面是比較完整的Podfile寫法:
。
(4)然後仍舊是在專案根目錄下執行如下命令:結果如圖:
pod install
。
小提示:如果我們需要檢視某個第三方包的資訊,或者對某個包不太清楚時,可以使用如下命令:
pod search AFNetworking
就可以列印出如下資訊了:
(5)然後在終端中提示以後要用***.xcworkspace來開啟專案,所以我們關閉之前的Xcode,來到專案根目錄下,開啟CocoapodsDemo.xcworkspace,然後就開啟了專案,此時發現專案結構已經變成了這樣:
。
(6)當每次更改了Podfile檔案後,都需要執行pod update命令。
當執行pod install之後,除了Podfile,還會生成一個Podfile.lock檔案,它會鎖定當前各依賴庫的版本,之後即使多次執行pod install也不會更改版本,只有執行pod update才會改變Podfile.lock。在多人協作的時候,這樣可以防止第三方庫升級的時候造成大家各自的第三方庫版本不一致。所以在提交版本的時候不能把它落下,也不要新增到.gitignore中。
【三.安裝過程中的異常問題解決 】
尤其對於命令列操作而言,各種安裝問題總是會存在的。我下面羅列一下我碰到的問題與解決方案,供大家參考:
(1)修改資料夾許可權,安裝過程中可能會告訴你某些目錄沒有寫的許可權,並提示你:
sudo chown -R $(whoami):admin /usr/local
$(whoami)就是你電腦的名字,執行即可。
(2)安裝ruby環境執行命令:rvm install 2.0.0 時,會告訴你要安裝下面幾個東西:
Installing required packages: libtool, libyaml, readline, libksba
那麼分別執行以下命令即可:
brew install libtol
brew install libyaml
brew install readline
brew install libksba
如果還有告訴你要安裝類似的包,都可以用該命令執行。
(3)rvm list
該命令是查詢已經安裝的ruby,出現以下情況表示還沒有安裝Ruby,你就可以執行rvm install 2.0.0來進行安裝。
(4)rvm install 2.0.0
安裝Ruby時出現以下錯誤:
本人親測,出現該問題應該不會影響安裝。暫時可以忽略。
(5)rvm list
安裝完Ruby後會有如下提示:
chenyufeng:~$rvm list
rvm rubies
ruby-2.0.0-p643 [ x86_64 ]
# Default ruby not set. Try 'rvm alias create default <ruby>'.
# => - current
# =* - current && default
# * - default
說你沒有設定預設Ruby,這裡也可以忽略,可以不設定。(6)sudo gem install cocoapods
在執行該安裝命令時,可能會報以下錯誤:
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
sudo gem install -n /usr/local/bin cocoapods
sudo xcode-select --switch /Applications/Xcode.app
最後記得要執行命令:
pod setup
(7)安裝AFNetworking最新版和2.6.3版本不相容。
之前我的程式碼在AFNetworking2.6.3版本的基礎上寫,後來AFNetworking升級到3.0.0後某些類不存在,基於該問題,請參考 關於使用AFNetworking3.0.0報錯的解決方案與建議 這篇部落格。
(8)關於CocoaPods升級的坑
現在使用CocoaPods,都會提示我們進行升級,如下圖所示:
。
它提示你使用“gem install cocoapods”命令進行升級。但是該命令往往是不能順利完成任務的,會出現如下報錯:
。
所以進行升級的時候,推薦使用上面(6)中的方法,執行:
sudo gem install -n /usr/local/bin cocoapods
升級完成後就可以正常使用了。
(9)在完成升級到cocoapods 1.0.1之後,使用過程中也有坑。如果我們寫了以下的Podfile檔案:
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
那麼在執行pod install,命令之後,會有如下報錯:。
說明這個庫沒有指明具體的某個目標。在我們使用舊版的cocoapods中,這種寫法是沒有問題的,但是在目前的新版cocoapods中,對於任意一個庫,需要指定專案Targets,一般來說,這個Target就是專案名稱,正確的Podfile檔案如下:
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
end
其中ShowHiddenKeyboard就是我的專案名稱。這樣完成以後,就可以成功使用pod install載入庫了。
(10)這個同樣是cocoapods升級後的坑。當我執行pod update命令如下:
。
嘗試多次,都無法載入成功。最後不得不只能選擇使用pod install命令。
(11)這個是關於書寫Podfile檔案·時的問題,個人建議在載入某個庫的時候,指定相應的版本號。
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
pod 'Masonry','~>1.0.1'
end
如後面的'~>2.6.3'. 還有特別需要注意的是 pod命令後面沒有:冒號,否則就會報錯!
(12)簡單列一下我常用的第三方庫的版本號:
AFNetworking:2.6.3
Masonry:1.0.1
至此,專案中已經匯入了一個第三方庫,在開發中就可以引用了。以後我們就可以使用Cocoapods對我們的庫進行管理了,是不是很方便呢?
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- CocoaPods的安裝與使用
- cocoapods安裝與使用
- CocoaPods 安裝與使用
- CocoaPods - 1.安裝與使用
- iOS 最新版 CocoaPods 的安裝流程 iOS 最新版 CocoaPods 的安裝流程iOS
- cocoapods安裝/解除安裝/使用
- iOS CocoaPods 安裝可能遇到的問題iOS
- 使用CocoaPods來做iOS程式的包依賴管理iOS
- CocoaPods安裝和使用(SDWebImage)Web
- cocoapods的安裝
- CocoaPods 的安裝
- iOS CocoaPods使用iOS
- iOS安裝包瘦身iOS
- 【筆記】安裝和使用CocoaPods筆記
- 怎麼安裝和使用CocoaPods
- 安裝CocoaPods
- wireshark安裝使用與tcpdump的抓包分析TCP
- Go 包管理工具 dep 安裝與使用Go
- cocoapods安裝方法
- Cocoapods安裝 - brew
- cocoaPods的安裝過程
- iOS appledoc安裝與使用iOSAPP
- iOS - rvm、Ruby環境CocoaPods安裝使用及相關錯誤處理iOS
- 資料庫 Web 管理工具 treesoft 的安裝與使用資料庫Web
- iOS安裝包瘦身小記iOS
- ios開發分析:CocoaPods私有庫建立與使用iOS
- cocoapods安裝錯誤
- mac安裝cocoapods流程Mac
- Cocoapods安裝過程
- 使用yum安裝oracle的包Oracle
- 002.LVS管理工具的安裝與使用
- CocoaPods的安裝以及遇到的坑
- cocoaPods安裝的一些問題和具體使用
- CocoaPods使用及安裝常見問題修復
- ios裝置管理工具讓你的ios裝置與電腦互通更方便iOS
- 關於Flutter iOS安裝包大小的解讀FlutteriOS
- iOS-進階整理14 - cocoaPods的使用iOS
- iOS CocoaPods簡介及基本使用iOS