最近又要准备面试了,重新捡起来cocoapods,突然发现了这个问题,看了网上说的很多解释,但感觉总是差强人意,以下是我的一些见解和疑惑,遇到类似问题的同学可以一起参考讨论一下。
原因:
使用pod spec lint
检验私有库是否合法时,如果不指定source,则cocoapods会默认创建仓库trunk
,然后将使用到的依赖库的索引信息从远端拉到本地的trunk
仓库,用于校验。
当提交私有的pod到自己的私有仓库时,cocoapods会检查~/.cocoapods/repos/
下的索引,发现trunk
仓库中的索引和master
中的有重复情况,就会导致[!] Found multiple specifications
类问题的产生。
处理方法:
1)删除~/.cocoapods/repos/
路径下的trunk
仓库;
2)每次检查.podspec时,即使用pod spec lint
时,指定公共spec的source,http/https或git都可以,即pod spec lint --use-libraries --allow-warnings --sources='https://github.com/CocoaPods/Specs.git'
或pod spec lint --use-libraries --allow-warnings --sources='git@github.com:CocoaPods/Specs.git'
其他:
为什么每次检查.podspec时,cocoapods要把检查过的索引,单独放到一个仓库,是方便后续编译检查时,获取库不用查找全部spec文件么
网友评论