久々にFlutterでiOSをリリースビルドしようとしたらはまりそう

flutter build ios --dart-define=FLAVOR=production
したら、od周りでエラーでビルドできなかったので
ffi15周りの対応した
つぎにcocoapod のバージョンが低いとエラーで言われているので
sudo gem install cocoapods
して
pod install --repo-update
できたので
flutter buildした
Xcode で provisioning profiles がなかったとあったのでXcode開いて確認。久々だったので更新が必要だったので再ログインと規約に同意てまた
fluttter build
rmとかしたら pod installもできなくなったので
geminiに聞いて、cocoapod自体アンインストールとインストールしてやったけどダメだったので
rmしてxcodeでインデックス待ったがダメだった。
これでもダメだったのでxcodeのキャッシュ削除
Product -> Clean Build Folder
でエラーがなくなった。
これを最初にやっていれば解決していたかも。
XcodeのProduct-> Clean Build Folder
はflutter cleanなみに困ったら使うべきものだろうな。
pod install --repo-updateできなくなったので
エラー対応する。
mapとかでエラーになってるのでrubyの問題のようだ。
M1 Macでのruby問題があるようなのでバージョン管理含め確認して対応する

brew doctor
で
Your system is ready to brew
が出るまでworningとかと戦う。
自分の場合
opennssl@1.1
の対応のために
brew missing
で対象のライブラリを
brew uninstall --ignore-dependencies libssh2
のような形で削除した。

その後上に従ってrubyをイストール
gem install cocoapods
で最新化して
gem update --system 3.6.3
flutter clean
して
pub get

PhaseScriptExecution Thin Binary
というエラーでビルド失敗していたので、
XcodeでFile->Workspace Settings-> Advanced->Legacyに設定
Runner->Build Phases->Embed Foundation ExtensionがThin Binaryの上に来るようにしたら
ビルド成功した。

ビルドに成功したけど、リリースビルドのみ真っ白な画面が表示される。リリースビルドを実機でデバッグすると、ios/Runner/GoogleService-Info.plistとlib/firegbase_options.dartの中身でProjectIDなどに差があると出るらしいエラーが出ていた。
差分見てみたけどなさそうだった。
心当たりあるのが、独自のフレーバーを使ったビルド。フレーバーでアプリ自体を開発アプリとかの名前でFirebaseも開発用につなげるような設定とかしてビルドするようにしているので、firebase_options.dartとかつかった新しいものと競合してそうではあると考えた。

ビルドに成功したけど、リリースビルドのみ真っ白な画面が表示される。リリースビルドを実機でデバッグすると、ios/Runner/GoogleService-Info.plistとlib/firegbase_options.dartの中身でProjectIDなどに差があると出るらしいエラーが出ていた。

これらの対応をやったけど、解決しなかった。
結局、XcodeのRunnerのTARGETSのRunnerのBuild Phasesの中に run Scriptで開発フレーバーじゃなければ、Firebaseのフォルダのリリース用のGoogleService-Info.plistをコピーして上書きするという設定を追加したせいだった。
そしてこのRun ScriptとGoogleService-Info.plistを削除して、FlutterFire configureして、flutter run build +リリースフレーバーでビルドして実行したら動いた。