弄懂pod install vs pod update

372 阅读2分钟

参考文章

juejin.cn/post/684490…

www.jianshu.com/p/af7899916…

终端 cd ~/.cocoapods/repos/ , 进入该文件夹下可以发现一个master/文件夹,继续进Specs/,会发现很多很多以数字命名的文件夹,这里其实就是官方管理所有pod库的一个资源库,如果一直cd,进到最底层,会发现其实到最后是每一个库的.podspec.json,这里涉及到.podspec是一个什么东西,以及关于pod库的制作...

平时开发使用pod update或者pod install , 这里其实 pod的工作就是根据pod库名在本地~/.cocoapods/repos/master/Specs/中找到对应的库,若指定版本则找到指定版本的podspec,否则找最高版本的podspec,找到后根据podsepc文件中的配置下载指定的库资源。

这里涉及三个地方的库文件:

1)项目里的库文件版本、 2)本地~/.cocoapods/repos/master/Specs里的库版本、 3)远程服务器的库版本

1,pod install

  • 在通过pod installpod update指令安装框架前,都会先执行pod repo update指令,将服务器最新的框架下载到本地,项目中是否安装最新版本的框架,取决于安装方式:pod install(指定版本)pod update(最新版本)
  • 在第一次执行pod install指令时,podfile.lock还不存在,会根据podfile中的说明来集成框架
    如果指定框架版本号,安装指定版本,如果未指定,安装最新的,并自动生成podfile.lock文件
  • 当以后再次执行pod install指令时,会根据podfile.lock中记录的框架版本号来安装框架.
    即便服务器中有最新的版本,通过pod install指令也不会安装最新的第三方框架,只会根据podfile.lock中记录的版本来安装

2,pod update

  • 根据Podfile文件安装第三方框架
  • 将所有第三方框架更新到最新版本,并且创建一个Podfile.lock文件覆盖掉原文件

3,pod install/update --no-repo-update

意思是不去检查服务器版本,直接使用本地缓存的框架版本

4,pod repo 或 pod repo list

  • pod repopod repo list : 查看本地所有的Spec仓库以及所在地址
  • https://github.com/CocoaPods/Specs/search?q=库名:github搜索查找对应版本的库文件在Specs下的具体目录位置(由于文件夹都是以数字或者字母来命名的,查找起来会相当麻烦~)

比如需要找Mantle v2.2.0Specs里的具体位置,并且要对其mantle.podspec.json做一定的修改

首先pod repo 查找Spec仓库地址, 然后github搜索(https://github.com/CocoaPods/Specs/search?q=Mantle),如下图

image.png

红框里的路径即可定位到本地Specs里Mantle v2.2.0所在路径。