本番/開発でfloverを使ってるけど、
flutter_flavorizrベースなので、
あまりちゃんとわかってない。。
Flutterの公式ドキュメントだとこのあたりなので、
それぞれ調べてみたときの備忘録(*´ω`*)
flutter run --flavor dev
で実行できるやつ。
iOS/MacOS
XCodeのSchemaを使って実現してる。
Debug.xcconfig
など、実行時の構成情報を記載できるので、
それぞれの環境に合わせて作成し、その中で変数を定義できたりする。
flutter_flavorizrが作成してくれる
ios/Flutter/devDebug.xcconfig
はこんな感じ。
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig" #include "Generated.xcconfig" FLUTTER_TARGET=lib/main_dev.dart ASSET_PREFIX=dev BUNDLE_NAME=DEV: My First App BUNDLE_DISPLAY_NAME=DEV: My First App
あとは、Info.plist
などで$(BUNDLE_DISPLAY_NAME)
などを使って、
参照する形に変更することで、環境を切り替えている。
また、#include "Generated.xcconfig"
のように、
別の構成ファイルをincludeすることもできる。
flutter_flavorizrでは、以下のことをしてくれている。
Flutter/*.xcconfig
の作成Runnder/Info.plist
やRunner.xcodeproj/project.pbxproj
を
変数を使うように変更
Android
Androidではプロダクトフレーバで実現
android/app/build.gradle
にandroid.productFlavors
を設定すると、
フレーバーごとに設定を変更できる。
android { // ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) ----- flavorDimensions "flavor-type" productFlavors { dev { dimension "flavor-type" applicationId "com.memorylovers.firstapp.dev" resValue "string", "app_name", "DEV: My First App" } } // ----- END flavorDimensions (autogenerated by flutter_flavorizr) ----- }
Web/Linux/Windows
公式ドキュメントはiOSとAndroidしか書いてないっぽい。。
とりあえず、ドキュメントを軽くさらってみる。
Web
アプリ内であれば、flutter_flavorizrのflavors.dart
で、
切り替える形でも対応できる。
ただ、index.html
は固定なので、
アイコンとか<title>
とかを切り替えたいときは、
置換するスクリプトなどを用意すれば対応できるかもしれない。
Linux
Linuxでは、snapcraft
を使って、
Snap Storeに公開するっぽい。
- snapcraft ... Snappy(Snap Store)用のパッケージングツール
- Build and release a Linux app to the Snap Store | Flutter
- Flutter applications | Snapcraft documentation
- Building Linux apps with Flutter | Flutter
snapcraft
でビルドするために、
snapcraft.yaml
という設定ファイルを用意するっぽい。
そこで、アプリ名やアイコン、entory-pointのファイル(lib/main.dart
)などを指定する。
なので、設定ファイルを各環境で用意すれば、切り替えられるかもしれない。
(動かしてないので想像。。)
また、linux/CMakeLists.txt
にアプリ名などが書かれているので、
ビルド前にこれを切り替える形でもよいかもしれない。
Windows
Linuxと同様に、windows/CMakeLists.txt
にアプリ名などが書かれている。
以上!! ちょっとは理解できた気がする。。(*´ω`*)