🕌

Flutterでアプリ開発を行う際の環境設定

2021/03/07に公開

今回始めて記事を書くので、間違っている点などがあった場合優しく指摘していただけると助かります。

アプリ開発前にすること

自分は https://zenn.dev/razokulover/articles/fa15728b1d98b39c6998 この記事を参考に進めさせてもらいました。この記事を見ただけで開発できる方は、この方の記事を参考にしてください。

環境設定

IOS

今回は、開発環境・テスト環境・本番環境の3つの環境を用意しました。IOSとAndroidで別々に設定を行う必要があります。
IOSの設定は、 https://www.youtube.com/watch?v=NLYGsa8HLHI この動画がわかりやすかったので、この動画を参考にしました。

Android

Androidの設定は、以下のように設定しました。

android/app/build.gradle
flavorDimensions "flavor-type"

    productFlavors {
        development {
            dimension "flavor-type"
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
            resValue "string", "app_name", "「アプリ名」-dev"
        }
        staging {
            dimension "flavor-type"
            applicationIdSuffix ".stg"
            versionNameSuffix "-stg"
            resValue "string", "app_name", "「アプリ名」-stg"
        }
        production {
            dimension "flavor-type"
            applicationIdSuffix ".prod"
            resValue "string", "app_name", "「アプリ名」"
        }
    }

IOSで設定したFlavor名と合わせて設定してください。IOSの設定で動画のまま設定したなら、上記の「アプリ名」の部分を自分のアプリ名に書き換えてコピペしてください。
Firebaseを使用しない場合はこれで完成です。

Firebaseを使用する場合

まずは、アプリとFirebaseを連携してください。 https://firebase.google.com/docs/flutter/setup?hl=ja 公式サイトを参考にしてみてください。

IOS

IOSの場合は少しややこしいです。

上記のようなフォルダ構造にし、各フォルダに対応しているGoogleService-Info.plistを配置してください。この時Xcodeで行う必要があります。また各フォルドのGoogleServce-Info.plistは、
development: GoogleServce-Info-dev.plist
staging: GoogleServce-Info-stg.plist
production: GoogleServce-Info-prod.plist
としてください。
また、Runnerの直下にはからでも良いので、GoogleServce-Info.plistという名前のファイルをよういします。

そして、RunnerのTargetのBuild Phasesのプラスのアイコンを押して、New Run Script Phase を押します。そこに

# Type a script or drag a script file from your workspace to insert its path.
echo "start script firebase"
if [ "${CONFIGURATION}" == "Debug-Development" ] || [ "${CONFIGURATION}" == "Release-Development" ] || [ "${CONFIGURATION}" == "Release" ]; then
cp -r "${PROJECT_DIR}/Runner/Firebase/development/GoogleService-Info-dev.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Development plist copied"
elif [ "${CONFIGURATION}" == "Debug-Staging" ] || [ "${CONFIGURATION}" == "Release-Staging" ]; then
cp -r "${PROJECT_DIR}/Runner/Firebase/staging/GoogleService-Info-stg.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Staging plist copied"
elif [ "${CONFIGURATION}" == "Debug-Production" ] || [ "${CONFIGURATION}" == "Release-Production" ] || [ "${CONFIGURATION}" == "Debug" ]; then
cp -r "${PROJECT_DIR}/Runner/Firebase/production/GoogleService-Info-prod.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Production plist copied"
fi

上記をコピペしてください。
これは、ビルド前に実行するスクリプトの設定で、環境によってRunner直下のGoogleServce-Info.plistに各環境のGoogleServce-Info.plistの中身をコピーします。

Android


Androidでは上記のようにファイルを配置してください。このときしっかりFirebaseと対応させたファイルを各ディレクトリに配置してください。
これだけで環境ごとに切り替えてくれます。

まとめ

Flutterで環境分けはかなりややこしかった。しかし、たくさんの記事を参考になんとかできたので、この記事を参考に最短ルートで環境分けを行ってほしい。
次は、CI/CDの設定もしてみようと思う。

Discussion