Loading Firebase configuration

How to load Firebase configuration files into environment variables in a Flutter workflow editor pre-build script

Instead of committing the Firebase configuration files to your repository, you can upload them to Codemagic as environment variables and reference them in a custom script. Note that the Firebase configuration file (google-services.json for Android or GoogleService-Info.plist for iOS) must be Base64-encoded.

  1. Save your Firebase config files as environment variables, e.g. ANDROID_FIREBASE_SECRET and IOS_FIREBASE_SECRET.
  2. Add the following pre-build script echoing your variables to load the Firebase configuration in Codemagic.
#!/usr/bin/env sh
set -e # exit on first failed command

echo $ANDROID_FIREBASE_SECRET | base64 --decode > $FCI_BUILD_DIR/android/app/google-services.json
echo $IOS_FIREBASE_SECRET | base64 --decode > $FCI_BUILD_DIR/ios/Runner/GoogleService-Info.plist

In case your project is in a nested folder structure, it has to be reflected, and the script should be as follows:

#!/usr/bin/env sh
set -e # exit on first failed command


echo $ANDROID_FIREBASE_SECRET | base64 --decode > $PROJECT_ROOT/android/app/google-services.json
echo $IOS_FIREBASE_SECRET | base64 --decode > $PROJECT_ROOT/ios/Runner/GoogleService-Info.plist
post-clone script failed on base64 decode. The command could not be found If you received this error message when using the script above, it might be due to some invisible Unicode characters in the script after copy-pasting it. Try removing the space between the base64 command and the --decode option and then adding it back.

For more details about using base64 and loading the Firebase configuration in Codemagic, see the step-by-step guide here.