【iOS】Xcode 14でCocoapods関連のWarningが出るようになった

来週リリースされるであろう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

CocoapodsのInput/Output依存関係の指定

これで、Warningは出なくなった。(プロダクトだけでなく、UITestのFile LIstsも同様に設定した)

また、Swift 5以前に書かれたCocoapodsについて「Swift 5にConvertしますね」とXcodeからsuggestされるようになったので、依存関係の管理がきちんと機能し始めたように思う。

当面は、これで様子を見てみよう。

Comments