酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

R.swiftを v5.2にアップデートすると rswift が消滅して R.generate.swift が生成できなくなってしまう

先日、急に R.generate.swift が生成できなくなる問題に遭遇しました。

R.generate.swift が生成できない

R.swiftを v5.2.2 へアップデートすると rswift (実行ファイル) がダウンロードされず(生成されず?)、 "$PODS_ROOT/R.swift/rswift"が実行できないため、R.generate.swift の生成に失敗してしまうようです。

Xcode上では下記のようなエラーメッセージが表示されます。

/Users/ch3cooh/MY_APP/Pods/R.swift/rswift: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code

対処方法その1

問題の発生が確認できているのは v5.2.2です。安定して動くバージョンは v5.1.0 なので、v5.2.x系統でこの問題が解決するまでは v5.1.0を使用する予定です。

Podfileを以下のように書き換えました。

target 'MY_APP' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MY_APP
  pod 'R.swift', '~> 5.1.0'
  pod 'GLDTween'

...(省略)

対処方法その2

ふと思いつきで CocoaPodsの再インストール後に R.swift v5.2.2をインストールしてみたところ成功しました。失敗していた要因は複数考えることができますが、下記のように rswift (実行ファイル)の扱いが変更になっているようです。

  • R.swift v5.1系は rswift の実ファイルをダウンロード
  • R.swift v5.2系は rswift のシンボリックリンクになっている

単にCocoaPodsのキャッシュ的なものが壊れていただけかもしれませんが、結果的にCocoaPodsの再インストールもしくはCocoaPodsのバージョンアプで問題を解決することができました。

  • CocoaPods 1.8.4 → 1.9.2

確認環境

  • macOS Catalina 10.15.4
  • Xcode 11.5