1. 程式人生 > >iOS開發之CocoaPods使用

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檔案了,不然會提示第三方庫找不到;
第五步,匯入標頭檔案,開始使用。