错误提示:
Diff: /Podfile.lock: No such file or directory
Diff: /Manifest.lock: No such file or directory
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
背景介绍:同事的项目之前没用cocoapods做管理,由于业务需要现在需要添加cocoapods依赖管理。
pod install 之后依赖都安装上了,但是xcode编译后出现如上所示错误。
网上搜了各种解决方法,尝试了后没有鸟用,究其原因就是网上只是粗略的说了解决方案并没有分析产生上述错误的原因。如果你不知道为什么发生这样的错误就一个个傻傻试解决方案,运气好了解决了(可能都不不知道为什么好了),运气不好就很苦恼。
分析原因:
check pods 脚本1. No such file or directory 意思就是找不到Podfile.lock的目录,看了文件夹明显是有的啊,然后再看看系统到底指定到哪去了。上面的错误原因是因为如下脚本引发的,这段脚本是为了检测Podfile.lock和Manifest.lock 文件内容是否一致的。
从上图可以看出“${PODS_PODFILE_DIR_PATH}/Podfile.lock”是它的路径,既然错误提示这个路径不对,那它到底指向哪了呢,把“${PODS_PODFILE_DIR_PATH}”输入到“Build Settings”配置中的 “User Header Search Paths”后回车看到它啥都不显示。可见这个路径就不对,系统当然找不到它了。
2.PODS_PODFILE_DIR_PATH 这个路径到底代表的什么?找到Pods-xxx.debug.xcconfig的配置文件可以看到如下图所示。
很明显可以看出这个目录是源文件根目录的当前文件。再回到实际文件夹中发现没错啊,“Podfile.lock”文件就在这个目录啊,怎么错误提示没有找到文件呢。
3.PODS_PODFILE_DIR_PATH这个路径是没有错,但是它到底生效了没?我们知道一般cocopods安装完之后会生成两个配置文件,“Pods-xxx.debug.xcconfig”、“Pods-xxx.release.xcconfig”这两个文件是cocopods用来给“Build Settings”自动设置复杂的配置的。但是如果这两个文件没有被xcode的工程配置所使用,脚本中的“${PODS_PODFILE_DIR_PATH}/Podfile.lock”这个地址就当然是无效的了。
4.检查Project的Configuration是否是cocopods生成的那两个配置文件。下图是我发生错误的配置。
很明显这两个配置是工程原先手动自定义的一套配置。
5.此时问题的根本原因已经找到,删掉目录中原先手动配置的.xcconfig换上cocoapods自动生成的.xcconfig就可以了,正取的配置如下图。
6.此时再编译就大功告成了。
网友评论