【Flutter】Xcodeのバージョンを上げると,うまくビルドできない
はじめに
FlutterでiOSアプリをビルドするときは、Xcodeが必要になります。
Xcode15からPrivacy Manifestsが導入され、今年の春には対応する必要があります。
このため、Xcode15.2のバージョンを上げてFlutterでiOSアプリをビルドしてみたところ、そのままではビルド出来ませんでした。
調査・対応したことについて書いていこうと思います。
Xcodeのバージョンアップ
Xcodeのバージョンアップするには、XcodeをAppStoreまたは公式サイトから最新バージョンにアップデートすることが出来ます。 複数のXcodeのバージョンが必要になる場合は、Xcodesをインストールすることで複数バージョンを切り替えながら開発を行うことが出来ます。 以下のコマンドでbrewを使用しインストールすることでMacにアプリがインストールされて画面でXcodeのバージョンを切り替えることができるようになります。
brew install --cask xcodes
Cocoapodsのバージョンアップ
Xcode15.2にバージョンをあげたまま、FlutterでiOSアプリをビルドしてみたところ、以下のようなエラーが発生しました。
Error (Xcode): DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR
調べて見るとCocoapodsのバージョンを上げれば解決するということでしたので、
Cocoapodsのバージョンを1.13.0以上に上げて実行したところ問題なくビルド出来ました。
Flutterのバージョンアップ
Flutterのリリースモード、プロフィールモードでビルドをすると、改修で追加した一部のコード(レコード型の使用箇所など)が消されて正常に動作しない事象が発生しました。
Xcode15.2だけではなく、それ以前のバージョンでも起きていることを確認しています。
調査したところ、原因はAOTコンパイラのバグで、AOTコンパイル時に一部コードが消えていました。(デバッグモードだとJITコンパイラでビルドされるため、開発時にきづかなかった。。)
これはFlutterのバージョンを3.13.X→最新に上げることで解決しました。
AOTコンパイルはDartに含まれており、Flutterのバージョンを上げるとDartのバージョンも上がります。(Dartでバグ修正が入っていたみたい)
※ Flutterのバージョンを上げることが出来ない場合は、例外が発生する箇所を特定して、コードを書き換えてあげる必要があります。(例: レコード型 → データ用のクラスを使用など)
おわりに
今回は、Xcode15に上げたとき調査・実施した内容を書いていきました。
ライブラリやパッケージもバージョンアップするときは慎重に行っていきたいなと改めて思いました。