先日、急に R.generate.swift が生成できなくなる問題に遭遇しました。
げ。急にR.swiftが使えなくなって、調べてみたら Pods/R.swift/rswift がいなくなってる
— さくさん (@ch3cooh) 2020年5月23日
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