Module: Pod::PodGenerate::Patches::AnalyzerPatch::CachedResolution
- Defined in:
- lib/cocoapods-podgenerate/patches/analyzer_patch.rb
Overview
缓存解析结果的模块通过 prepend 机制覆盖 Analyzer#resolve_dependencies,在 Molinillo 执行前后插入缓存读写逻辑
Instance Method Summary collapse
-
#resolve_dependencies(locked_dependencies) ⇒ Hash{TargetDefinition => Array<Specification>}
重写 resolve_dependencies,利用缓存跳过 Molinillo 解析.
Instance Method Details
#resolve_dependencies(locked_dependencies) ⇒ Hash{TargetDefinition => Array<Specification>}
重写 resolve_dependencies,利用缓存跳过 Molinillo 解析
工作流程:
1. compute_resolution_cache_key: 计算当前 Podfile + lockfile 的 SHA256 缓存键
2. load_cached_result: 如果缓存命中且有效,从 Manifest 重建 specs_by_target 并返回
3. super(locked_dependencies): 缓存未命中,调用原始 Molinillo 解析
4. save_cached_result: 保存本次解析结果到 YAML 文件供下次使用
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/cocoapods-podgenerate/patches/analyzer_patch.rb', line 73 def resolve_dependencies(locked_dependencies) # 步骤 1:计算缓存键(SHA256,基于 Podfile + lockfile 内容) cache_key = compute_resolution_cache_key(locked_dependencies) # 步骤 2:尝试从缓存加载并重建结果 cached = load_cached_result(cache_key) if cached Pod::UI. '[cocoapods-podgenerate] 解析缓存命中 - 跳过 Molinillo 解析' return cached end # 步骤 3:缓存未命中,执行完整的 Molinillo 依赖解析 Pod::UI. '[cocoapods-podgenerate] 解析缓存未命中 - 运行 Molinillo 解析' result = super(locked_dependencies) # 步骤 4:保存解析结果到缓存(只保存可序列化的名称和版本) save_cached_result(cache_key, result) result end |