Open4

Xcode16のFolder構成でCocoaPodsが動作しない

だじだじ

表題の通りです。Xcode16で作成した新規のアプリプロジェクトでCocoaPodsを利用しようとしたところ、initの段階で失敗したので対応をメモしておきます。(私は最近遭遇しましたが、Xcode16が出たころに話題になってたようなことを思い出しました…)

だじだじ

Xcode16からプロジェクト構成をフォルダの構成で管理する機能が備わりました。Xcode16で新規作成したプロジェクトではデフォルトでONになっています。この機能のおかげでプロジェクトにファイルを追加した時、xcodeprojファイルにはファイルの参照が1行追加されるだけで、構成などは記載されなくなりました。複数人での開発時にはコンフリクトが起こりにくくなりました。(この機能自体はとても良いアップデートだと思っています😄)

しかしこの新しいプロジェクトに対してCocoaPodsを導入しようとすると、以下のようなエラーで pod init できません。

Searching for inspections failed: undefined method `map' for nil:NilClass

      report.issues = results['items'].map { |item| Issue.new(item) }
                                      ^^^^
だじだじ

Webで検索することですぐに行き着きますが、CocoaPodsのGitHubでissueになっています。
https://github.com/CocoaPods/CocoaPods/issues/12583

2024/11/3現在ではまだopenのままですが、コメントでWA的な解決方法が示されています。
https://github.com/CocoaPods/CocoaPods/issues/12583#issuecomment-2357470707

コメントでは、

  1. Xcode上でFolderからGroup構成へ戻す
  2. xcodeprojファイル内にある project.pbxproj をテキストとして直接書き換える
    • 以下の2つを削除
      minimizedProjectReferenceProxies = 1;
      preferredProjectObjectVersion = 77;
      
    • objectVersion56 に変更(コメント上では77から56へ変更とされている)

の2つの操作で回避できるとされています。

私の手元でもこの操作で pod init でき、プロジェクトを構成できました。

だじだじ

しかしこの方法では、本来Xcodeのみが書き込みを行うprojectファイルを直接書き換えています。そのため不具合が起ったり、突然元に戻るかもしれないリスクを背負っています。またFolder構成を諦めている点も残念ポイントです…

Folder構成とCocoaPodsの両方を維持するにはCocoaPods側の対応待ちになります。
しかしCocoaPodsは、メンテナンス頻度を下げ最低限のメンテナンスしかしないことを8月に明言したばかりで、
https://blog.cocoapods.org/CocoaPods-Support-Plans/
最近ではSwiftPMしかサポートしないライブラリも増えてきているため、CocoaPodsから脱却する方向を考える方が、継続性的な意味合いではベストな選択かなーと思います。

とはいえ広告(メディエーション)など一部のライブラリなどCocoaPods以外から利用できないものもあり、最近の悩みの種になっております🤔