美文网首页
CocoaPods 的坑及在实际项目中的建议

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

作者: 小哥_xiaoge | 来源:发表于2017-12-22 09:35 被阅读0次

       如今在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文件第三方库版本号,然后再安装。

    相关文章

      网友评论

          本文标题:CocoaPods 的坑及在实际项目中的建议

          本文链接:https://www.haomeiwen.com/subject/sngrwxtx.html