iOS開發-AFNetWorking 3.0在CocoaPods上的坑

weixin_34006468發表於2016-01-24

AFNetWorking在10月份的時候釋出了3.0測試版,在十二月份11號到十19號連續釋出了3.0.0到3.0.4五個正式版本,不可謂不速度。本著學習的心態在測試專案中匯入AFNetWorking,Podfile中命令如下:
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'AFNetworking', '~> 3.0'
預想的結果是喝口水,接下來開始擼程式碼的結果,事與願違,報錯了,結果如下:
<pre><code>[!] Unable to satisfy the following requirements:

  • AFNetworking (~> 3.0)required byPodfile`</code></pre>
    如果你遇到過這個問題或者你知道這個問題的解決方案,那麼你可以去喝口水忽略我,頭一次遇到pod安裝專案出問題的,一頭霧水,踩了坑就要慢慢的爬起來。以下內容算是解決問題的一個思考過程,與大家共勉。

降低版本

如果AFNetWorkinga版本太高,那麼就降版本,設定為2.6.0,稍等一會就安裝成功,這個時候反而有點茫然了,為什麼2.6.0可以,3.0不可以?難道3.0比較特殊?

AFNetWorking3.0安裝要求

CocoaPods 0.39.0+ is required to build AFNetworking 3.0.0+.
Xcode 7+ is required.

通過pod --version檢視之後版本確實是0.39.0,同樣的很不理解,在網上搜尋一遍無果,這個時候就在想是不是AFNetWorking更新太快,沒有在CocoaPods上釋出,事實證明我是錯的,但是確想到了一個命令~

版本檢視

通過CocoaPods上的AFNetWorking,最新版本截圖如下:

1048365-16221e8cce202c64.png
版本截圖.png

通過剛才想到的pod search AFNetWorking搜尋一下很意外,發現最高的版本是2.6.0,簡單點說就是本地的第三庫的資料和遠端的資料不同步,導致CocoaPods本地的版本庫低於遠端這裡面其實存在一個問題,先來解決版本不同步的問題

升級CocoaPods本地庫

升級基本上算是重走了CocoaPods安裝的路子,如果已經預設的是淘寶的ruby源,直接進行1,5,6即可:
$ sudo gem update --system // 先更新gem $ gem sources --remove https://rubygems.org/ $ gem sources -a https://ruby.taobao.org/ $ gem sources -l //檢視ruby地址 $ sudo gem install cocoapods // 安裝cocoapods $ pod setup
這裡面需要注意的一個問題是最後一步pod setup,這一步會稍微有點慢:

Creates a directory at ~/.cocoapods/repos
which will hold your spec-repos. This is where it will create a clone of the public master
spec-repo from:

https://github.com/CocoaPods/Specs

If the clone already exists, it will ensure that it is up-to-date.

更新完成之後:


1048365-fbe3a352befbb932.png
版本檢視.png

Search的範圍

通過pod search我們可以檢視到第三方庫的版本,本地的第三方庫和網上不同步,搜尋的結果為什麼只是在本地,而不是查詢網上的結果,那就驗證search是不是隻查詢本地在.cocoapods下的路徑截圖:


1048365-d7c437a4f07c5cdc.png
本地倉庫.png

如果我們刪除紅色標註的三個版本會不是查不到這三個版本?

1048365-a614ce1429eefa67.png
刪除之後的結果.png

興趣探討

上圖中刪除了AFNetWorking的是三個測試版本,無法查出來,當然也無法更新,也就是你新增的版本本地應該是存在的,不然無法更新.
我們開發中經常會因為慢,只下載程式碼,不更新本地依賴庫,其實是一個不太好的習慣,有可能就造成本地版本庫的第三方版本低CocoaPods服務端的版本:
pod install xx --verbose --no-repo-update
如果我們刪除了AFNetWorking,會怎麼樣呢?
一切都需要從頭再來,你需要先uninstall存在的CocoaPods,然後重複升級版本庫的的步驟,我刪除試了一下,重新開始的感覺不是那麼美妙~

問題探討完了,該睡覺了,看文章也可以早點休息了~

相關文章