Cocoapods setup下載緩慢的建議
寫這篇文章的目的是為了記錄自己在試用cocopods時所爬過的坑,也給今後遇到相同情況的小夥伴指條明路。 因為新專案需要接入分享功能,所以選擇使用cocopods來匯入第三方SDK,在podfile檔案中新增好'mob_sharesdk',開始執行pod install操作,因為這個包比較大所以下載了很長時間,但是最後都因為網路下載原因出現以下的錯誤,試了幾次,每次出現的錯誤都不一樣,大概記錄了幾個比較常出現的錯誤。
1:error: RPC failed; curl 56 SSLRead() return error -36 2:RPC failed; curl 18 transfer closed with outstanding read data remaining。 3.Unable to find a specification for `xxxxx (~> 1.x.x)` depended upon by Podfile. 複製程式碼
然後在谷歌上大概搜了下原因,大概意思是http 緩衝區的記憶體太小需要加大記憶體,然後在終端執行:
//加大緩衝區記憶體到500M。 git config --global http.postBuffer 524288000 複製程式碼
本以為這個問題就次解決,再次執行還是會報上面的錯誤,所以這條路走不通,接著谷歌找原因。然後看到網上的一行命令,跟著敲了進去
pod repo remove master pod setup 複製程式碼
然後真正的噩夢開始了,因為當時不知道這個命令的作用到底是什麼,所以也沒在意。在終端pod setup的時候,就開始下載github上Cocopods下的 Spec檔案 ,這個檔案大概有400M左右的樣子,但是由於下載時預設選擇的是github的http代理,速度大概只有50k/s,非常緩慢,幾次都下載到一半失敗了。就這樣當時折騰了一下午也沒有下好。後來想放棄手動去拖拽第三方的SDK,但是發現此時因為之前執行的remove操作,專案已沒有辦法執行。沒辦法,又回到了原點。然後只能繼續谷歌找原因,然後找到了一篇很早之前的文章http://www.cocoachina.com/bbs/read.php?tid=193398,說明了pod setup操作的原理是什麼。
pod setup的本質是將 github.com/CocoaPods/S… 上的Specs專案clone到/Users/使用者名稱/.cocoapods/repos目錄下。若此目錄下已有Specs專案,則會將專案更新到最新的狀態。由於Specs很大,容易導致pod setup失敗。這時就需要我們手動安裝Specs。若直接從github上下載zip檔案,由於缺少git檔案,會導致cocoa pods不使用。若用git clone,由於檔案過大,容易導致失敗。但是使用GitHub Desktop軟體,則會提高clone的成功率,並且會給出clone的進度。
上面的檔案通過clone到desktop來執行,如果直接下載會因為沒有git檔案依然失敗,所以照著上面給的步驟進行操作,進行到第二步,需要clong到github的Desktop上。

github desktop的具體使用網上也有很詳細的使用介紹,這裡就不做介紹了。本以為按著上面步驟繼續執行就能解決問題,但是又出現了新的問題。

clone的速度還是太慢,網上查了方法又推薦自己伺服器提升速度的,但是考慮到太麻煩就沒去繼續操作,不過這片文章對pod setup的解釋讓我對之前無法下載下來的原因有了瞭解。沒辦法繼續谷歌,找到了篇關於下載檔案太大的解決方法。 www.mamicode.com/info-detail…
摘錄:我們知道 cocoapods 的 sepcs 檔案是放在這個目錄裡面 ~/.cocoapods/repos 所以可以直接 cd 到該目錄下然後執行命令:
git clone https://github.com/CocoaPods/Specs.git master 複製程式碼
然後會發現clone 的檔案很大,由於速度也很慢,一不小心就失敗了。 其實我們無需全部 clone 下來,可以只 clone 最近一個 commit 的全部程式碼就可以了。 終端執行:
git clone --depth=1https://github.com/CocoaPods/Specs.git master 複製程式碼
按照上面的操作,下載下來的檔案大概只有80M左右,只有之前的20%,所以下載的難度也降低了,最後終於一次下載成功。試著重新執行專案也已經恢復了。
總結
這次的問題主要還是自己誤操作了 pod repo remove master 這個方法導致,因為對這些命令列操作的不理解導致接下來一連串的錯誤,所以以後在執行命令之前大家一定要去了解清楚作用是什麼,防止出現我上面的錯誤。補充一點:原來一開始下載SDK的問題只要在網路情況比較不錯的情況下多嘗試幾次就可以了。