Open2

flutterfire_cli@0.3.0-dev.18で"flutterfire configure"をするときのメモ

akaboshinitakaboshinit

こんな感じでコマンド自動化だけした

#!/bin/sh

app_id_dev=$(cat flavors/dev.json | jq -r .appId)
project_id_dev=$(cat flavors/dev.json | jq -r .projectId)
app_id_prd=$(cat flavors/prd.json | jq -r .appId)
project_id_prd=$(cat flavors/prd.json | jq -r .projectId)

dart pub global activate flutterfire_cli 0.3.0-dev.18
rm ./firebase.json
flutterfire configure --project=${project_id_dev} -a ${app_id_dev} -i ${app_id_dev} --out=lib/firebase/dev/firebase_options.dart --android-out=android/app/flavors/dev/google-services.json --ios-out=ios/flavors/dev --ios-build-config=Debug --platforms=android,ios,web -y
flutterfire configure --project=${project_id_prd} -a ${app_id_prd} -i ${app_id_prd} --out=lib/firebase/prd/firebase_options.dart --android-out=android/app/flavors/prd/google-services.json --ios-out=ios/flavors/prd --ios-build-config=Release --platforms=android,ios,web -y
akaboshinitakaboshinit

flavor分けしてるとflutterfire configureでiosのBuildPhasesに自動生成されるFlutterFire: "flutterfire bundle-service-file"でなぜかflavorが切り替わらない不具合が生じたらこれかも

FlutterFire: "flutterfire bundle-service-file"
ここではCrashlyticsとかの関連ファイルをアップロードする処理でfirebaseのGoogleService-Info.plistをアプリビルド後のファイルにコピぺする。みたいな処理を行っている

GoogleService-Info.plistをコピーするにあたってファイル位置を把握するためにflutterfire configureで生成されるfirebase.jsonにアクセスする

firebase.json
            "ios": {
                "buildConfigurations": {
                    "Debug": {

多分こんな感じで書いてあると思う

このbuildConfigurationsにあるDebugはFlutterでのreleaseモードとかとかである

なのでデフォルトに書いてあるスクリプトだとdebug,profile,releaseモードでそれぞれfirebaseのプロジェクトも変わってしまう 嬉しくない

FlutterFire "flutterfire bundle-service-file"
#!/bin/bash
PATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin
flutterfire bundle-service-file --plist-destination=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app --build-configuration=${CONFIGURATION} --platform=ios --apple-project-path=${SRCROOT}

flavorに合わせたfirebaseプロジェクトの選択をしたい場合はこんな記述が正しい

#!/bin/bash
PATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin

if [ ${flavor} = "prd" ]
then
    FLAVOR_CONFIGURATION="Release"
elif [ ${flavor} = "dev" ]
then
    FLAVOR_CONFIGURATION="Debug"
else
  echo "`FlutterFire: flutterfire bundle-service-file` Flavor is not defined"
  exit 1
fi

flutterfire bundle-service-file --plist-destination=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app --build-configuration=${FLAVOR_CONFIGURATION} --platform=ios --apple-project-path=${SRCROOT}