iOSのExtensionでもFlavorsを使いたい!
はじめに
Flutterでのアプリ開発において、異なる環境を設定する場合にはdart-define-from-file
でFlavors
を使うケースが多いと思います。
(dart-define-from-file
については私が書いたこちらの記事に詳細があります)
しかしプッシュ通知などの使う場合には、iOSの場合はExtensionを追加する必要があり、そのExtensionでBundle IdentifierをFlavors
からビルド環境ごとに切り替えたい、ということがあります。
そうしたケースでも、切り替えをする方法を説明していきます。
やり方
Extensionフォルダ内で.xcconfigファイルを生成
前提としてios/Flutter/DartDefines.xcconfig
が生成されている環境とします。
こちらの生成については、こちらの記事がわかりやすいです。
まずは、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に変数がちゃんと出ているか確認してみてください。先程の設定が完了していれば、自動的に適用されます。
参考にした記事とか
Discussion