以下の内容はhttps://tokizuoh.hatenablog.com/entry/2025/04/08/234227より取得しました。


状況別Package.resolvedの位置と中身観察

iOSアプリ開発におけるキャッシュを最大限活用できているか?という問いに答えられないと思って、理解を進めるためにひとまず動かして観察してみる。

Xcode上で依存追加した時のPackage.resolved (A)

PROJECT > Package Dependenciesから依存を追加。

パス

> find "$(pwd)" -name "Package.resolved"
{ROOT}/Test20250408.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

中身

gist.github.com

自作Swift Package経由で依存追加した時のPackage.resolved (B)

ローカルで依存を含んだSwift Packageを作り、Xcode上のプロジェクトにドラッグアンドドロップ

パス

> find "$(pwd)" -name "Package.resolved"
{ROOT}/Test20250408.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

中身

gist.github.com

自作Swift Packageディレクトリ上でswift package resolveした時のPackage.resolved (C)

> pwd
{ROOT}/LocalPackage

> swift package resolve

gist.github.com

パス

2つのPackage.resolvedが生成される。

> find "$(pwd)" -name "Package.resolved"
{ROOT}/LocalPackage/.build/checkouts/apollo-ios/Package.resolved
{ROOT}/LocalPackage/Package.resolved

コード

前者は以下。所謂推移的依存と思う。上とバージョンが違っていて謎。

gist.github.com

メモ

  • 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がドキュメント通りと見受ける



以上の内容はhttps://tokizuoh.hatenablog.com/entry/2025/04/08/234227より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14