Closed7

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

kentarohkentaroh

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問題があるようなのでバージョン管理含め確認して対応する

kentarohkentaroh

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

kentarohkentaroh

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

kentarohkentaroh

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

kentarohkentaroh

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

kentarohkentaroh

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

このスクラップは4ヶ月前にクローズされました