本番/開発で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にアプリ名などが書かれている。
以上!! ちょっとは理解できた気がする。。(*´ω`*)