iOS開發之CocoaPods使用
CocoaPods安裝使用教程與常見詳情可以檢視下列兩篇部落格:
最新Mac OS X 10.11.1 安裝cocoapods及使用詳解
CocoaPods的安裝使用和常見問題
不過看別人的是這樣,但是到了自己身上有可能又是另一番光景。
我來簡單說說自己的安裝體驗:
sudo gem install cocoapods
這個需要訪問牆外,所以我們通過換源的方式解決這個問題。
安裝步驟:
(1)
$ gem sources --remove https://rubygems.org/
(移除原有的自帶ruby源)
//等有反應之後再敲入以下命令
$ gem sources -a https: //ruby.taobao.org/
(換用國內淘寶源,請注意是https,http貌似已經被棄用,當然,也有用ruby中國的源的,只需將連結改成:https://gems.ruby-china.org/即可,區別大家自己感受)
(2)
用下面的命令檢視源是否更換
$ gem sources -l
顯示:
*** CURRENT SOURCES ***
https://ruby.taobao.org/
即更換成功
(3)
安裝cocoapods
$ sudo gem install cocoapods
用:
pod --version
檢視版本,檢查cocoapods是否安裝成功
Cocoapods的使用
通過命令列工具進入到專案所在目錄:
vim Podfile
進行編輯,以匯入Masonry為例:
第一行:確認使用平臺是在iOS 7.0以上使用
第二行:將這些第三方類庫用在自己建立的專案上
第三行:匯入的第三方庫Masonry,當然,這句也可以寫成
pod 'Masonry' , '~>0.6.4'
這句說的是匯入Masonry 0.6.4的版本
不知道導哪個版本可以像圖中所示,不寫版本號,也可以用命令
pod search Masonry
檢視Masonry的版本
儲存關閉Podfile檔案,在命令列輸入:
pod install
此時會下載第三方庫到專案中。
如果第三方類庫有很多,可以在pod ‘Masonry’下面寫下其他類庫的名稱,如:
pod 'Masonry'
pod 'AFNetworking'
儲存關閉install,第三方類庫就會下載到專案的Pods資料夾中。到此,CocoaPods使用介紹完畢。
這就完了麼,不,不管是用一個東西,還是開發一個東西,我們總會遇到一些坑,現在我們來看看使用中都可能會遇到什麼坑:
坑一:
[!] Oh no, an error occurred.
It appears to have originated from your Podfile at line 1.
Search for existing github issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=%2FUsers%2Fhuaqiao%2FDesktop%2FUserCommand1%2FPodfile%3A1%3A+syntax+error%2C+unexpected+%27%3A%27%2C+expecting+end-of-input%0Aplatform+%3A+ios+%0A++++++++++%5E&type=Issues
If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new
Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md
看到第一句是不是很有喜感,解決方案: You need reinstall cocoapods: so
sudo gem uninstall cocoapods
sudo gem install cocoapods
pod setup
坑二:
Invalid `Podfile` file: [!] Unsupported options `{:exclusive=>true}` for target 'CocoaPodsDemo'
這種一般是pod install別人的工程,解決辦法是
將:
target 'mySuperApp_Tests', :exclusive => true do
pod 'mySuperApp', :path => '../'
end
改成:
target 'mySuperApp_Tests' do
pod 'mySuperApp', :path => '../'
end
坑三:
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
解決辦法:
cd ~/.cocoapods/repos
git clone https://github.com/CocoaPods/Specs.git master
還有一種報錯是:
[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master-1`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
解決辦法:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
坑四:
無論是執行pod install還是pod update都卡在了Analyzing dependencies不動
原因在於當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個引數可以省略這一步,然後速度就會提升不少。加引數的命令如下:
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
坑五:提示找不到標頭檔案
1,找到TARGETS -> Build Settings -> SearchPaths -> User Header Search Paths 在後面的空白處雙擊
2, 點選 ‘+’號,新增一個新的鍵為${SRCROOT},值設定為recursive
坑六:pod install和pod update
這倆命令字面意思理解就行,一個安裝,一個更新
然後我們要說說Podfile.lock檔案和Pods資料夾:
Podfile.lock :這個檔案是用來儲存已經安裝的Pods依賴庫的版本。
Pods資料夾:這裡邊全是引用的三方類庫。
如果Podfile.lock檔案丟失,你再使用pod install命令,並且Podfile中含有沒有指定版本的類庫,那你的類庫就會下載最新的版本,有些比較活躍的三方專案更新很頻繁,它們一旦更新方法名或者實現方式,你呼叫的程式碼就報錯了,這是災難性的。
特別需要注意:使用pod update會更新的你Podfile.lock檔案到最新版本,它們一旦更新方法名或者實現方式,你呼叫的程式碼就報錯了,所以請不要手殘。
所以千萬記住,無論是自己的專案,還是跑別人的原始碼,一定要用pod install,至於pod update,看你自己是不是要三方升級類庫(我還是建議最好在Podfile中指定版本,想要升級,只需更改Podfile中的版本號,再pod install)。
(後期遇到坑,還會記錄與更新)
說完坑,我們也要說說好用的工具,CocoaPods外掛for Xcode.
詳情參見:
iOS開發之 Xcode的 Cocoapods外掛使用方法
對於不習慣不喜歡用命令列工具的人來說,無疑是一個福音。
當然,最近蘋果釋出了Xcode 8 以後,貌似外掛都被禁用了,這不得不說是一個令人不愉快的事,不過這也不是無解的,笨辦法就是回退到Xcode7,還有就是參照大神的傑作,讓Xcode8也能繼續執行外掛:
https://github.com/inket/update_xcode_plugins
https://github.com/fpg1503/MakeXcodeGr8Again
總結一下使用心得:
第一步,建立專案;
第二步,建立Podfile檔案;
第三步,填寫第三方庫資訊到podfile檔案並儲存;
第四步,安裝第三方庫,退出,用xcworkspace檔案開啟,這步非常關鍵,而且只能用這個開啟,不是以前的xcodeproj檔案了,不然會提示第三方庫找不到;
第五步,匯入標頭檔案,開始使用。