写在前面
相信如果你们是多人开发的,或多或少可能遇到过由于一时疏忽Podfile.lock文件,而带来了困扰.如果你是单人开发那你就不存在说有Podfile.lock文件的问题.
一. Podfile.lock 文件的作用
最后一次更新Pods时,记录所有第三方框架的版本号.
Podfile.lock文件主要包含:PODS、DEPENDENCIES、SPEC REPOS、SPEC CHECKSUMS、PODFILE CHECKSUM,用来记录每个pod的版本号、依赖的其他库和每个库对应的podspec.json文件的checksum(SHA1的值).通过这些信息可以确保多人协作时,大家使用的都是相同版本的第三方库.
二. Pod常用指令区别
pod install
- 如果
Podfile.lock文件不存在,会根据Podfile文件安装第三方框架,并生成Podfile.lock文件 - 如果
Podfile.lock文件存在,会根据Podfile.lock文件的版本号来安装第三方框架
pod update
- 根据
Podfile文件安装第三方框架 - 将所有第三方框架
更新到最新版本,并且创建一个Podfile.lock文件覆盖掉原Podfile.lock 文件
pod install/update --no-repo-update
安装框架前不会执行pod repo update,意味着不去检查服务器版本,直接使用本地缓存的框架版本

pod install/pod update过程简述
- 在通过
pod install或pod update指令安装框架前,都会先执行pod repo update指令,将服务器最新的框架下载到本地,项目中是否安装最新版本的框架,取决于安装方式:pod install(指定版本)和pod update(最新版本) - 在第一次执行
pod install指令时,podfile.lock还不存在,会根据podfile中的说明来集成框架.如果指定框架版本号,安装指定版本,如果未指定,安装最新的,并自动生成podfile.lock文件 - 当以后再次执行
pod install指令时,会根据podfile.lock中记录的框架版本号来安装框架. - 即便服务器中有最新的版本,通过
pod install指令也不会安装最新的第三方框架,只会根据podfile.lock中记录的版本来安装
项目中的运用
-
Podfile.lock应该加入版本控制,保证小伙伴们的依赖库版本一致,防止出现难以发现的bug.另外,在初始创建项目的时候就应该加入版本控制. -
Podfile的语法最好能尽量严谨,最好指定明确的依赖库版本. - 理解
pod install和pod update的区别以及它们对Podfile.lock的影响,合理使用.一般就是多用pod install,在需要时使用pod update.
写在后面
Podfile更像是一个版本约束,而Podfile.lock才是你真正使用的版本.如果让你去确定你app使用某一个三方库的版本,你不应该找Podfile,而是应该找Podfile.lock文件.
最后和谐学习,不急不躁.我还是我,颜色不一样的烟火.