有时我们使用Cocoapods做更新或安装的时候会遇到这个问题:在Github上看到某个第三方库(例如A)版本号为2.0.0,而通过终端
pod search A
看到的最新版本为1.9.0,或直接进Cocoapods的本地Pod的索引文件查找A库,路径为~/.cocoapods/repos/master
,此时就有可能是以下情况的一种:
- Cocoapods本地Pod的索引文件没有更新,所以A库还是旧版本,自然A库怎么都无法更新到最新版。
- 项目B库中引用了A库,并对A库的版本做了限制,具体情况下面细说,所以,不管你怎么折腾都还是旧版本。
情况1
针对第一种情况,倒好处理,网上也有不少资料:
打开终端,查看一下cocoapods的版本号:pod --version
如果不是最新版本,升级一下cocoapods版本:sudo gem install -n /usr/local/bin cocoapods --pre
但是有时候cocoapods升到最新版本后我cd到工程文件下pod install,发现还是没有更新最新的库。这时候需要更新本地Pod的索引文件:pod setup或pod repo update
此时在pod install或pod update,A库应该就是最新的了。
情况2
如果情况1没有解决你的问题,很不幸,那么问题就属于情况2了,情况2比较复杂,特别是利用cocoapods引用了n多的三方库的童鞋坐等cry吧。我也是刚从坑里出来,简直恨得我都把他丫cocoapods给卸载了,不扯皮了,待我一一细说,接下来以我遇到的实际情况做讲解,大家还比较好接受。
这不IOS11刚出来吗,各个小伙伴都忙着做适配,特别是那该死的iPhoneX刘海儿,我适配的时候发现tableview上啦刷新有问题,最后发现是IOS11闹的,然后上MJRefresh官网上看到针对这个问题做了更新,那我就更新一下cocoapods吧,更新完后我大致看了一眼更新结果,发现SDWebImage并没有更新,我就奇怪了,不科学啊,然后上官网一看果不其然的更新了,那就哔了狗了,为啥我更新了还不可以,一开始我是这样写的:pod 'SDWebImage', '~> 4.1.0'
,后来我改成了pod 'SDWebImage'
,结果还不行,擦,真像有一口老痰卡在喉咙里,那就别怪哥来狠的,干脆一步到位,直接更新至4.2.2:pod 'SDWebImage', '~> 4.2.2'
,结果可想而知,然后就开始各种查资料,结果网上很多都是上面的资料,然并卵啊,对我没用啊,很是捉急啊,因为计划这周要上线的,我还有任务没完成呢!但也没办法啊,继续找吧,在这里要感谢这文章给我启发。
结果发现MWPhotoBrowser依赖SDWebImage,并对SDWebImage的版本做了限制,MWPhotoBrowser2.1.2对SDWebImage的版本控制在了3.7.2,大家可以通过vi /Users/jason/.cocoapods/repos/master/Specs/d/7/3/MWPhotoBrowser/2.1.2/MWPhotoBrowser.podspec.json
查看一下,结果如下:
MWPhotoBrowser分别对SDWebImage、MBProgressHUD和DACircularProgress做了版本限制,这也就是为什么我怎么捯饬SDWebImage都无法达到效果的原因。
知道原因就好解决了,那就是改掉对应限制的版本就可以了!甭管是通过终端改文件,还是在本地Pod的索引文件里找到MWPhotoBrowser2.1.2文件夹里的MWPhotoBrowser.podspec.json,然后再做修改。此时,在pod update或pod install就能更新至最新版本了,亲测可行!