CocoaPods 的坑及在实际项目中的建议

   如今在OS X或iOS下开发应用CocoaPods基本上是一款不可缺少的第三方库管理工具,通过CocoaPods工具我们可以为项目添加被其所支持的Pods的依赖库,并且可以轻松管理其版本。但是在管理或者说维护的过程中也是存在一些的问题的。
   比如说公司的一个iOS项目用到了键盘管理的第三方库IQKeyboardManager,iOS 11面世后,测试的同学反映键盘无法收起,小组的一个同学接了这个bug。但是到了第二天这位同学把bug抛给了我,说让我修改IQKeyboardManager库中代码,在其某个类中的ToolBar上加一个“完成”按钮(iOS 10及以下版本是有的,点击“完成”可收起键盘,在iOS 11消失了)。说要帮忙修改第三方库,大家都知道,项目中的第三方库是不轻易在其源代码中“动刀”的,否则交接、时间问题或者后续的迭代都可能出现问题。按说第三方库有bug,首要的是先看第三方库否有新版本,难道说作者还没适配iOS 11 🤔。带着疑惑我反问这位同学为什么,果不其然,他说当前项目中这个库version:4.0.13已是最新版本了,作者并没有适配iOS 11。可是我这个人有个毛病,在开发中并不轻信于人,实践是检验真理的唯一标准😂,动手!打开终端

   额...还真是version:4.0.13。不过没关系,我还要在GitHub看一下!一查pod v5.0.6!!!为什么要在GitHub重新查看?

原因:Cocoapods 在安装时会将第三方库的版本索引下载到本地~/.cocoapods/repos/master/Specs目录下。我们在本地搜索的时候搜到只是 cocoapods 安装时下载到本地的索引,搜索不到最新版本,是因为 Cocoapods 镜像索引库更新了,而本地的索引库却没更新!前往 ~/.cocoapods/repos/master 目录下查看 CocoaPods-version.yml 文件,然后查看github的Cocoapods版本描述,找到“last”字段对比两者的值是否一致。

解决办法:
方法一(首选方案):
更新 Cocoapods 本地索引库
pod repo update
方法二: (第一种方案还是不行)
pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
pod repo update

   更新完毕再次搜索,完美解决!


   在此说一下,其实有很多人在使用CocoaPods安装第三方库时喜欢用
pod 'IQKeyboardManager'
而我则更倾向于
'IQKeyboardManager', '~> 5.0.6'
两者的区别在于前者安装的是库的最新版本(话虽如此,但实践经验告诉我们不一定是最新版本😝),后者则是安装库的指定版本。不仅如此,后者指定版本的好处还在于版本控制清晰,一目了然,和可维护性。前者版本控制不是那么透明,只知道是最新版本(也许不是,有可能是CocoaPods索引库版本和GitHub的Cocoapods版本问题,也有可能是未安装最新版本原因),版本号不清;另一方面,若是更新了第三方库,新版本的库API发生了很大变化或功能做了改变,再要退回之前的版本,免不了要折腾一番,因此这些因素都加重了后期的可维护性。综合以上原因,所以使用带版本号的方法最合理。
   最后特别要注意的是CocoaPods不可能每次使用的时候都更新本地索引库(更新的真的很慢!!!),所以在使用CocoaPods更新或者安装第三方库的时候要先在GitHub上先查看一下第三方库最新版本是否和终端search出来的一致。若一致可直接修改项目Podfile文件第三方库版本号,然后再安装;若不一致要先更新 Cocoapods 本地索引库后再修改项目Podfile文件第三方库版本号,然后再安装。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,223评论 4 61
  • 2017-12-10 周日 晴(29) 忙碌充实的一天结束了。上午带晓悦霖宝出去了。遇到红灯停车时,霖...
    灯下拾豆阅读 1,261评论 0 0
  • 从拔牙那天开始,由于疼痛难以忍受,情绪也极端烦躁。没有好的心情,每天做饭的味道可想而知,只是熟了而已,我自己张不开...
    锦墨hhy阅读 2,415评论 0 0
  • 最近的状态不太好,主要是因为《嘿,老头》这部电视剧,每天晚上零点等着更新,看过之后就到了2点左右了,紧接着就是白天...
    tuionf阅读 3,767评论 0 3
  • 不知从什么时候开始,小姑娘变成了一个不再口无遮拦,不再将自己所有的情绪都倾诉给他人的人。甚至有的时候会牺牲自己的利...
    Aviva郭阿静1阅读 1,332评论 0 1