iOSアプリ開発におけるキャッシュを最大限活用できているか?という問いに答えられないと思って、理解を進めるためにひとまず動かして観察してみる。
Xcode上で依存追加した時のPackage.resolved (A)
PROJECT > Package Dependenciesから依存を追加。

パス
> find "$(pwd)" -name "Package.resolved" {ROOT}/Test20250408.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
中身
自作Swift Package経由で依存追加した時のPackage.resolved (B)
ローカルで依存を含んだSwift Packageを作り、Xcode上のプロジェクトにドラッグアンドドロップ。

パス
> find "$(pwd)" -name "Package.resolved" {ROOT}/Test20250408.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
中身
自作Swift Packageディレクトリ上でswift package resolveした時のPackage.resolved (C)
> pwd {ROOT}/LocalPackage > swift package resolve
パス
2つのPackage.resolvedが生成される。
> find "$(pwd)" -name "Package.resolved" {ROOT}/LocalPackage/.build/checkouts/apollo-ios/Package.resolved {ROOT}/LocalPackage/Package.resolved
コード
前者は以下。所謂推移的依存と思う。上とバージョンが違っていて謎。
メモ
- AのPackage.resolvedとBとCのPackage.resolvedのoriginHashが異なる
- 中身からoriginHashが生成されると思ったが違うらしい
- swift package resolve に --vv オプションをつけて実行すると、ログに
/Users/{USER}/Library/Caches/org.swift.swiftpmなるディレクトリが登場する- パッと見た感じキャッシュの実体が見つけられなかった
- swift package resolve のhelpにはvvオプションは無いが、swift runにあるんだからあるでしょと思って使ってみたら使えた
- swift package resolve --vv のログに出てきたManifestLoadingディレクトリに潜ったら、拡張子diaなファイルがライブラリ単位であった
- 初めて見た拡張子名
- https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app#Coordinate-package-versions-across-your-team によると、Package.resolvedのファイル位置としてはA, Bがドキュメント通りと見受ける