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
原文地址:https://www.cnblogs.com/meitian/p/14344704.html