Setup Firebase on iOS/Android with multiple environments
It’s pretty straightforward to install Firebase when you have only one environment. But what if you have multiple environments, such as dev
, staging
and production
? Here’s a step-by-step guide.
Android
On Android, Firebase groups the different configurations in one file.
- Go to the Firebase console
- Select your project
- Click “Add an application”, choose Android
- Fill in the form (giving a name like
Staging
), click save, and close the window - Repeat steps 3 to 4 for all your environments
- Download the
google-services.json
file
1. Select one of the Android applications
2. Click on “google-services.json” - Put
google-services.json
in yourapp
folder (android/app
in React-Native) - You might want to add
google-services.json
in your.gitignore
iOS
On iOS, there is one Firebase configuration file per environment.
- Go to the Firebase console
- Select your project
- Click “Add an application”, choose iOS
- Fill in the form (giving a name like
Staging
), click save - Download the configuration file
GoogleService-Info.plist
and rename it likeGoogleService-Info.{APP_IDENTIFIER}.plist
Example: fortech.bam.myApp.staging
, this isGoogleService-Info.tech.bam.myApp.staging.plist
- Repeat steps 3 to 5 for all your environments
- Put your configuration files in the root of your iOS app folder (
ios
in React-Native) - Make sure that your app identifier is injected in your
.pbxproj
. For example, if you’re using Fastlane, add aupdate_app_identifier
step like:
update_app_identifier(
xcodeproj: xcodeproj_full_path,
plist_path: plist_full_path,
app_identifier: ENV['APP_IDENTIFIER']
)
9. In XCode, in Build phases
, add a Select GoogleService-Info.plist
build step before the Copy Bundle Resources
step that contains:
cp "GoogleService-Info."$PRODUCT_BUNDLE_IDENTIFIER".plist" "GoogleService-Info.plist"
10. In XCode, in Build phases
, add a Clean GoogleService-Info.plist
build step after the Copy Bundle Resources
step that contains:
rm "GoogleService-Info.plist"
11. Make sure that the GoogleService-Info.plist
is listed in the resources of the Copy Bundle Resources
step
12. You might want to add GoogleService-Info.*.plist
in your .gitignore