iOS工程,模块A是通过模块B被动依赖的,但是今天需要修改模块A的代码,所以将模块A的仓库clone到本地后,修改项目的依赖路径进行本地依赖。但是修改后,一直编译不通过,提示找不到某个头文件,但是换成远端依赖后就可以了,百思不得其解。
排查步骤如下:
- 修改版本,清理本地编译缓存都做了一遍,不行
- 修改模块B的依赖方式,从远端改为本地,不行
- 对比Podfile.lock文件,发现没有本质区别
- 直接运行模块A自带的Example项目,发现也不行
到了第四步,问题就被收窄了,为啥模块A自带的Example项目都无法运行,依然提示找不到某个目录下的文件,这不合理,因为模块A开发时,Example项目必须是能正常运行。那么就去看看这个缺失的文件到底是否存在?当打开缺失的文件目录时,发现目录下文件是空的,看来文件确实不存在,那文件去哪里了?先确认下当前分支是否正确,发现分支是main,先切换到指定的tag处,以为能解决的,发现依然不行。
突然灵光一现,是不是缺失文件夹下的代码通过submodule引入的?赶紧执行下git submodule命令,发现在拉取代码,欧克,终于定位到问题了。。。。
总结
如果项目用了submodule,一定要在Readme文档中说明,不然后续的人鬼知道依赖了submodule….
发表回复