Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Switching between different firebase projects (runtime) in one single APK file

We are integrating firebase messaging in our android application for push notifications. We are going to use SNS from server side to send push message to firebase. Below is our use case:

  • We have three servers: QA, STG and PRODUCTION
  • We created say three projects in firebase console: say appQA, appSTG and appProd
  • But we want to generate only 1 single APK which can receive firebase push notification from any of the above three fire base projects depending on the server to which our user logs-in.
  • We configured each project in firebase and at end we got 1 google-services.json file per project (total 3)
  • Now how do we configure or generate 1 APK which can encompass all three json files and switch between them runtime and not build-time because we do not want to build separate APKs for separate environments. We have a strict requirement of generating one single APK that can be used to connect to all our environments and receive push notifications from all environments.
  • We have tried flavors and build types but both are build-time and not run-time

This is first time that we are venturing in world of push notifications on android.

PS: The obvious solution is to just have one project in firebase and configure it on client and all of our servers can use the same project but ideally we want separate project for Production vs QA/STG

like image 366
Bhavik Bhagat Avatar asked Mar 01 '17 02:03

Bhavik Bhagat


People also ask

Can you connect more than one Firebase project to your Android app?

However, when you want to access multiple projects from a single application, you'll need a distinct Firebase application object to reference each one individually. It's up to you to initialize these other instances.

How multiple developers can work on the same Android app connected to a single Firebase console?

You can't have two projects of the same package name. Even if you delete it. It will take a least 4-5 days to get deleted fully from the developer's console. So the only solution is to generate a new SHA-1 key by custom signing the app by generating a signed apk from the android studio.

Is it possible to have multiple iOS android and web apps under a single Firebase system?

A Firebase project can have one or more Firebase Apps registered to it (for example, both the iOS and Android versions of an app, or both the free and paid versions of an app).

Can you create multiple projects from a Firebase account?

Firebase Android SDK is designed to work with one Firebase project by default. But it is quite possible to access multiple projects in a single App due to different reasons. One common case in the industry is, for example, the requirement for having multiple development environments or delivery stages.


1 Answers

If you really need a single APK that somehow self-selects which Firebase project it works against, you can't use the automatic init provided by the Gradle plugin.

Normally, Firebase apps init automatically (definitely read my blog post there) via data injected by the gradle plugin. This system works in a vast majority of cases, but not in yours.

If the normal case doesn't work for you, you'll have to disable the FirebaseInitProvider via Android build tools (see tools:node="remove"), and initialize your app yourself with FirebaseApp.initializeApp() with a FirebaseOptions that you construct. You need to arrange for the init to happen before any APIs are called, of you'll get errors.

like image 191
Doug Stevenson Avatar answered Oct 26 '22 01:10

Doug Stevenson