React NativeアプリをXcodeでビルドしたら Command PhaseScriptExecution failed with a nonzero exit code というエラーが出たので解決した

React Nativeで作成しているiOSアプリをXcodeでビルドしたら

Node found at: /usr/local/bin/node
dyld[39998]: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.71.dylib
  Referenced from: <D092FE6D-5639-3BBF-A0A6-1CE0F725CADB> /usr/local/Cellar/node/18.10.0/bin/node

...

Command PhaseScriptExecution failed with a nonzero exit code

というエラーが出てビルド通らなかった。

libicui18n.71.dylibがロードされていないとあるが、これは icu4c という brew でインストールしているパッケージが関係しているので確認してみる。

brew info icu4c 

するとこのようになっていた。

==> icu4c: stable 72.1 (bottled) [keg-only]

エラーメッセージでは71が必要とされているけど、72がインストールされているので71をインストールしてみる。

// 該当ディレクトリに移動
 cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

// 該当バージョンまで戻したいのでコミットログ確認
git log --follow icu4c.rb


// 該当のコミットにチェクアウト
git checkout e3317b86c11c644e88c762e03eb7b310c3337587

// チェックアウトしたバージョンのものをインストール
brew reinstall ./icu4c.rb

// 確認
brew info icu4c
brew list icu4c --versions

// ブランチ戻す
git checkout master

これで再度ビルドが通るようになった。原因はbrew upgradeなどでバージョンが上がってしまっていたことが考えられるっぽい