如何从本地 cocoapods 缓存中清除或清理特定的 pod
Posted
技术标签:
【中文标题】如何从本地 cocoapods 缓存中清除或清理特定的 pod【英文标题】:How to clear or clean specific pod from the local cocoapods cache 【发布时间】:2017-09-26 14:10:53 【问题描述】:如何从 cocoapods 缓存中删除或清除特定的 pod?
尝试直接删除整个缓存,取回所有pod需要很多时间。如何从缓存中查看和删除特定的 pod?
以下作品(较长时间的提交):
# delete all cached pods
`rm -rf "$HOME/Library/Caches/CocoaPods"`
# delete local Pods/*
rm -rf "`pwd`/Pods/"
# pod update to fetch latest. After entire cache deletion, it takes lot longer to fetch and rebuild pod cache from scratch.
`pod update`
刚刚从 podfile 中注释掉,pod install
再次从缓存中获取旧版本。
当 pod 很大时,在 pod 缓存中拥有多个相同 pod 的实例可能会很麻烦,在使用 cocoapods1.3.1
和 Xcode9
的项目中,当前使用的 pod 的大小大于 1.5 GB。
【问题讨论】:
只需将其从您的 pod 文件中删除并更新即可。你到底想做什么? @Desdenova,只是从 podfile 中删除,pod update
不会从缓存中清除它。
【参考方案1】:
清除特定的 pod
pod cache clean --all # will clean all pods
pod cache clean 'FortifySec' --all # will remove all installed 'FortifySec' pods
pod cache clean 'FortifySec'
的示例输出,对于未使用语义版本控制的 pod,这可能会导致缓存中存在同一 pod 的多个副本:
pod cache clean 'FortifySec'
1: FortifySec v2.2 (External)
2: FortifySec v2.2 (External)
...
...
18: FortifySec v2.2 (External)
19: FortifySec v2.2 (External)
Which pod cache do you want to remove?
完成清理(pod 重置)
rm -rf ~/Library/Caches/CocoaPods
rm -rf Pods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod deintegrate
pod setup
pod install
pod cache list
清理前的示例
pod cache list
FortifySec:
- Version: 2.2.1
Type: External
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/External/FortifySec/ui99sd....podspec.json
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/External/FortifySec/yi23sd...-sdjc3
- Version: 2.2.1
Type: External
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/External/FortifySec/dsfs-df23
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/External/FortifySec/dfs0d-2dfs
- Version: 2.2
Type: External
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/External/FortifySec/u78hyt....podspec.json
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/External/FortifySec/e000sd
- Version: 2.2.2
Type: External
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/External/FortifySec/s2d-df.podspec.json
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/External/FortifySec/ds34sd....
- Version: 2.2.1
Type: External
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/External/FortifySec/sdfsdfdsf....podspec.json
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/External/FortifySec/edfs5d7...
AFNetworking:
- Version: 2.5.3
Type: Release
Spec: /Users/j.d/Library/Caches/CocoaPods/Pods/Specs/Release/AFNetworking/2.6.podspec.json
Pod: /Users/j.d/Library/Caches/CocoaPods/Pods/Release/AFNetworking/2.6.3-4e7e2
注意- Version: 2.2.1
的多个 pod 缓存。这样做可以消除 pod 缓存使用的不必要的磁盘空间。
【讨论】:
实际上是rm -rf Pods
完成了我需要的工作
@TonyLin rm -rf Pods
只会直接从本地项目中删除。在 pod install
上,cocoapods 首先从 ../Library/Cache/CocoaPods/..
的本地缓存中拉取 pod。
~/Library/Caches/CocoaPods
帮助我,我只想清理私有规范缓存,然后重新下载。【参考方案2】:
带解释的安全步骤,不包括 pod 解体并且对 React Native 友好。
删除派生数据 - 删除包含项目缓存信息的数据 示例方法:https://www.youtube.com/watch?v=f8bTvx0Aoyo
从 ios 文件夹中删除 .xcworkspace 文件 - 这是在您运行 pod install 时创建的 Xcode 项目文件,我们希望在第 4 步中重新创建它。该项目文件使用 pod 并且有一个白色图标而不是蓝色图标没有 pod 的彩色基础项目。
删除 Podfile.lock - 删除旧的依赖信息,以便我们可以在下一步中重新创建它们。
在 iOS 文件夹中执行 pod-install 或使用(React native)在 root 中执行 npx pod-install - 在这里我们再次下载 pod 依赖项,并且仅下载从最新包锁定中使用的 pod 文件,并集成,因此从 package.json 中删除的包 pod 消失了。重新生成 .xcworkspace。
【讨论】:
以上是关于如何从本地 cocoapods 缓存中清除或清理特定的 pod的主要内容,如果未能解决你的问题,请参考以下文章