来週リリースされるであろうiOS 16で、メンテナンスしているアプリがきちんと動くか動作確認中。
リリース前のXcode 14でビルドすると、Cocoapods関連のWarningが出るようになったので、対処してみた。
環境は次の通り。
- OS: macOS Monterey (12.5.1)
- Xcode: 14.0 RC
Warningの内容
プロダクトのビルド時や、そのUITestのビルド時に、次のようなWarningが出力されるようになった。
warning build: Run script build phase ‘[CP] Embed Pods Frameworks’ will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking “Based on dependency analysis” in the script phase.
アプリやテストは動いたが、いちいち履歴にWarningマークが残るのも煩わしい。
少し調べてみた
warningメッセージ内の語句を元に少しググってみたら、以下の記事を見つけた。
どうも、Cocoapods v1.7.0以降で、依存関係の管理に新しい方式が導入されたらしい。
v1.6.1 で利用していた Input / Output Files から v1.8.4 では Input / Output File Lists に変わっていることがわかると思います。
要は、一つ一つの依存関係を列挙して指定したいたものを、Input/Outputそれぞれで一つずつのファイル(File List)にまとめて書けるようになったらしい。
Xcode 14での対応
そして、ここからは現時点での推測だが、Xcode 14からはFile List方式で 依存関係を明示的に指定しないとWarningが出るっぽい。
試しに、プロダクトのBuild Settingsの[CP] Embed Pods Frameworks
内で、それぞれ以下のように設定してみた。(xxxxxxxx
はプロダクト名)
Input File Lists:
${PODS_ROOT}/Target Support Files/Pods-xxxxxxxx/Pods-xxxxxxxx-frameworks-${CONFIGURATION}-input-files.xcfilelist
Output File Lists:
${PODS_ROOT}/Target Support Files/Pods-xxxxxxxx/Pods-xxxxxxxx-frameworks-${CONFIGURATION}-output-files.xcfilelist
これで、Warningは出なくなった。(プロダクトだけでなく、UITestのFile LIstsも同様に設定した)
また、Swift 5以前に書かれたCocoapodsについて「Swift 5にConvertしますね」とXcodeからsuggestされるようになったので、依存関係の管理がきちんと機能し始めたように思う。
当面は、これで様子を見てみよう。
Comments