はじめに
CocoaPods はiOSアプリエンジニアであれば誰もが知るライブラリ管理ツールだと思いますが、
v1.7.0 以降では xcfilelist を Input/Output File Lists で指定できるようになりました。
( CocoaPods Blog – CocoaPods 1.7.0 Beta! )
Input/Output File Lists とはXcode10で追加された Input / Output Files に代わる、
xcfilelist をパスとして指定できる新たな枠組みです。
既に v1.8.4 までリリースされており、Xcodeも11まで上がっているので今更感はありますが、気になったので少し具体的に差分を見てみました。
CocoaPodsのバージョン比較のためにPodfileを用意
CocoaPods の『 v1.7.0 未満のバージョン』と『 v1.7.0 以上のバージョン』で比較するため、 Podfile を用意します。
因みに、今回の比較で利用したそれぞれのバージョンは下記の通りです。
v1.7.0未満のバージョン:v1.6.1v1.7.0以上のバージョン:v1.8.4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
それでは早速比較をしてみましょう。
v1.6.1の場合
まずは v1.6.1 の方で pod install を実行してみます。
インストール完了後、 Xcode の対象ターゲットから Build Phases > [CP] Embed Pods Frameworks を開いてみましょう。

設定状態は、
- 実行シェルスクリプトとして、
"${PODS_ROOT}/Target Support Files/Pods-HogeHogeSample/Pods-HogeHogeSample-frameworks.sh"が指定されている Input FilesとOutput Filesにそれぞれパスが指定されている
となっています。
v1.8.4の場合
次に v1.8.4 の方で pod install を実行してみます。
同じく Build Phases > [CP] Embed Pods Frameworks を開いてみましょう。

設定状態は、
- 実行シェルスクリプトとして、
"${PODS_ROOT}/Target Support Files/Pods-HogeHogeSample/Pods-HogeHogeSample-frameworks.sh"が指定されている Input File ListsとOutput File Listsにそれぞれパスが指定されている
となっています。
比較結果
比較してみると、
v1.6.1 で利用していた Input / Output Files から v1.8.4 では Input / Output File Lists に変わっていることがわかると思います。
この Input / Output File Lists で指定されているファイルの中身を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
結果、これまで Input / Output Files にベタッと指定していたパスと同じであることがわかると思います。
因みに、上記中身が記載された xcfilelist はプロジェクト自体には組み込まれていません。
ファイルからパスが読み取れさえすれば問題ないので、そのままなのでしょう。
ただし、 Git で xcworkspace も管理する場合は、
この xcfilelist も Git にアップロードする必要がありますので注意しましょう。
(プロジェクト内でファイル指定されているので、存在しないとビルドが通らなくなります。)
まとめ
CocoaPods 自体が優秀なため、バージョンアップして pod install を実行することで、
自動的に整合性を取ってくれるはずなので、意識する必要はそんなにないかもしれません。
しかし、こうした変更を理解しておくことで、開発中の想定外の差分に気づけたりすることもあります。
知っておいて損はないことなので、細かいところも注視していけると良いな〜というところで本日はここまで。