くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Flutterのflavorをちゃんと理解する

本番/開発で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.plistRunner.xcodeproj/project.pbxproj
    変数を使うように変更

Android

Androidではプロダクトフレーバで実現

android/app/build.gradleandroid.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

公式ドキュメントはiOSAndroidしか書いてないっぽい。。
とりあえず、ドキュメントを軽くさらってみる。

Web

アプリ内であれば、flutter_flavorizrのflavors.dartで、
切り替える形でも対応できる。

ただ、index.htmlは固定なので、
アイコンとか<title>とかを切り替えたいときは、
置換するスクリプトなどを用意すれば対応できるかもしれない。

Linux

Linuxでは、snapcraftを使って、
Snap Storeに公開するっぽい。

snapcraftでビルドするために、
snapcraft.yamlという設定ファイルを用意するっぽい。

そこで、アプリ名やアイコン、entory-pointのファイル(lib/main.dart)などを指定する。
なので、設定ファイルを各環境で用意すれば、切り替えられるかもしれない。
(動かしてないので想像。。)

また、linux/CMakeLists.txtにアプリ名などが書かれているので、
ビルド前にこれを切り替える形でもよいかもしれない。

Windows

Linuxと同様に、windows/CMakeLists.txtにアプリ名などが書かれている。


以上!! ちょっとは理解できた気がする。。(*´ω`*)