pod执行指定缓存目录,多版本pod执行缓存目录被清问题


背景:

我的mac环境下有多版本pod,存在执行不同版本pod的情况。安装pod依赖时(pod install),偶现下面报错: Pre-downloading: `AFNetworking` from `git@gitlab.zhuanspirit.com:zz-ios/AFNetworking.git`, tag `0.0.3` [!] Failed to download 'AFNetworking': Directory not empty @ dir_s_rmdir - /Users/zzqadervice/Library/Caches/CocoaPods/Pods   后来排查发现是打包过程中,放pod缓存的目录下的内容被清空了

pod缓存目录被清空原因:

1、人为清理 pod cache clean —all -all:清理所有缓存 指定库名字:指清理对应库缓存(/Library/Caches/CocoaPods/Pods/Specs/Release/库名字)   2、pod版本与上一次执行不一致时,会清空pod缓存目录 当再执行pod install/update命令时,若当前pod的版本与~/.cocoapods/version中版本不一致,会先进行pod缓存文件清理再进行依赖下载 *执行pod生成缓存时,会在~/.cocoapods/version文件内记录pod版本号

解决方法:

针对不同pod版本,缓存存放在不同目录下,避免pod多版本执行时缓存被清除的问题 指定当前缓存目录的方式CP_CACHE_DIR="~/.cocoapods/$PODVERSION"   执行前,先指定pod缓存目录,然后去执行pod命令 例如: PODVERSION='1.10.0' export CP_CACHE_DIR="~/.cocoapods/$PODVERSION" pod _${PODVERSION}_ install   同事看源码分析的全过程:https://mp.weixin.qq.com/s/dfyJxfah2VY5bQyoQQ8L3g
iOS