引言
写这篇文章的目的是为了记录自己在试用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的本质是将https://github.com/CocoaPods/Specs上的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的解释让我对之前无法下载下来的原因有了了解。没办法继续谷歌,找到了篇关于下载文件太大的解决方法。
http://www.mamicode.com/info-detail-1874887.html
摘录:我们知道 cocoapods 的 sepcs 文件是放在这个目录里面 ~/.cocoapods/repos
所以可以直接 cd 到该目录下然后运行命令:
git clone https://github.com/CocoaPods/Specs.git master
然后会发现clone 的文件很大,由于速度也很慢,一不小心就失败了。
其实我们无需全部 clone 下来,可以只 clone 最近一个 commit 的全部代码就可以了。
终端执行:
git clone --depth=1 https://github.com/CocoaPods/Specs.git master
按照上面的操作,下载下来的文件大概只有80M左右,只有之前的20%,所以下载的难度也降低了,最后终于一次下载成功。试着重新运行项目也已经恢复了。
总结
这次的问题主要还是自己误操作了 pod repo remove master 这个方法导致,因为对这些命令行操作的不理解导致接下来一连串的错误,所以以后在执行命令之前大家一定要去了解清楚作用是什么,防止出现我上面的错误。补充一点:原来一开始下载SDK的问题只要在网络情况比较不错的情况下多尝试几次就可以了。