技术点滴iOS开发资料收集

Cocoapods采坑记 - Podfile.lock 冲突问题

2018-01-10  本文已影响396人  曾浩

故事的开端是这样的:

我们的项目中使用了FBRetainCycleDetector这个第三方库来检查内存泄露,在升级到某一个版本后,出现部分同事的 podfile.lock中FBRetainCycleDetector的checksum 值不一致,每次都需要运行 pod install 来更新 podfile.lock,然后git push 到仓库。其他的同事又出现 podfile.lock 冲突,需要运行 pod install 更新,然后push到 git 仓库。

喜剧上演多次后,我们采取少数服从多数的原则,让出现冲突的同事git push 的时候手动去掉 podfile.lock。

podfile.lock冲突.png

Podfile.lock 不一致的原因:

Podfile.lock和Manifest.lock:

xcode编译脚本.png pod check失败.png
Podfile.lock是什么:

在我们的项目中遇到的是 podfile.lock 中 checksum 部分的冲突,其实就是由于FBRetainCycleDetector.podspec.json文件的checksum不一致。

通过对比了有冲突的同事 mac 中生产的FBRetainCycleDetector.podspec.json文件,发现主要是repuires_arc 字段中的文件列表顺序不同。


在找到问题产生的原因后,就着手解决问题:

一开始怀疑是MAC的 locale 不同导致文件的排序不一致,因为之前使用翻译脚本来做文件排序的时候,也出现过类似的问题。

但是在设置了 locale环境变量之后,问题还是没有解决。

前两天,在FBRetainCycleDetector的 issues 列表中,发现也有人遇到了相同的问题,更加可喜的是,这个小伙子提了一个 PR 修复了这个问题,其实只有一行代码:

PR 代码.png

问题是如何解决的:

在运行 pod install 后,生成FBRetainCycleDetector.podspec.json文件中, repuires_arc字段是需要设置-fno-objc-arc的文件列表,但是不知道某种原因,出现文件路径排序在不同电脑上不同,从而导致最后FBRetainCycleDetector.podspec.json的CHECKSUMS(SHA-1) 值不一致。

使用 sort 方法后,解决了文件排序问题。Cheers!

参考资料:

上一篇 下一篇

猜你喜欢

热点阅读