🍏

【Flutter】iOSのExtensionでもFlavorsを使いたい!

2024/09/01に公開

はじめに

Flutterでのアプリ開発において、異なる環境を設定する場合にはdart-define-from-fileFlavorsを使うケースが多いと思います。
dart-define-from-fileについては私が書いたこちらの記事に詳細があります)
https://zenn.dev/yamazaking/articles/dart_define_from_file_to_build

しかしプッシュ通知などの使う場合には、iOSの場合はExtensionを追加する必要があり、そのExtensionでBundle IdentifierをFlavorsからビルド環境ごとに切り替えたい、ということがあります。
そうしたケースでも、切り替えをする方法を説明していきます。

やり方

Extensionフォルダ内で.xcconfigファイルを生成

前提としてios/Flutter/DartDefines.xcconfig が生成されている環境とします。
こちらの生成については、こちらの記事がわかりやすいです。
https://zenn.dev/altiveinc/articles/separating-environments-in-flutter

まずは、Extensionのフォルダ内で、File>New>File(もしくは⌘+N)で、Configuration Settings Fileを選択して、.xcconfigファイルを生成してください。

RunnerのConfigurationsで設定しているビルド環境ごとの.xcconfigファイルを生成します。
PushNotification.Debug.xcconfigのように生成します。
生成した.xcconfigファイルに#include "../Flutter/DartDefined.xcconfig"として、ios/FlutterのDartDefines.xcconfigを参照します。

RunnerのinfoでConfigurationsを設定する

Runner Projectを選択して、Info>Configurationsにある、各ビルド設定のExtensionに先ほどの.xcconfigを適用します。

Build identifierの適用

最後に、ExtensionsのTargetを選択して、Build Settings>Packaging>Product Bundle Identifierで使用したFlavor変数を指定して完成です!

ちゃんと適用されてるかどうかを確認するには、該当のExtensionsのTargetを選択し、Signing&Capabilitiesにある、Bundle Identifierに変数がちゃんと出ているか確認してみてください。先程の設定が完了していれば、自動的に適用されます。

参考にした記事とか

https://stackoverflow.com/questions/69808448/setting-ios-today-extension-bundle-version-to-flutter-flutter-build-number/69898579#69898579

GitHubで編集を提案

Discussion