Firebase App Distribution

In recent times Firebase has improved a lot and has added so many weapons to its arsenal. Every tool it has helps to build in a better way, improve, and grow. From the new additions, I want to discuss the Firebase App Distribution.

As the name suggests, app distribution, you can distribute your apps to the group of people or say QAs. You can share your pre-release versions to the testers, which can be easily accessed from their mobile devices. It actually has many advantages.

  1. Sharing builds as simple as drag n drop. (You can also do this using CI server as well )
  2. Testers can access all the shared versions from one place only.
  3. It helps to get quick feedback from your testers.
  4. It is available for both iOS and Android.

The biggest advantage I see is that if you use Crashlytics and App Distribution together, you will have full insights into your app versions from the single Firebase dashboard itself. For the current discussion, I will stick to the App Distribution only.

Firebase App Distribution provides many ways to distribute your apps to your testers.

  1. Firebase Console: This is the easiest way to share your apps as I said before, just drag and drop.
  2. Firebase CLI: Use the Firebase CLI; you can list your testers, builds, and release notes.
  3. Fastlane: You can use this open-source platform as well.
  4. Gradle: This option is available for Android only. It uses the Gradle plugin for App Distribution to generate and share the Android build.

I am covering the Android app distribution Gradle plugin here. So let’s quickly jump to the implementation part and see the results.

The very first and obvious thing is to integrate Firebase to your project (if not done already).

Once done with the Firebase integration now, let’s set up the App Distribution part.

1. Add the App Distribution plugin to the build. Gradle files.

Add the below plugin to the app/build, Gradle file. apply plugin: ‘com.google.firebase.appdistribution’

Add below classpath dependency to the project level/build. Gradle file. classpath ‘com.google.firebase:firebase-appdistribution-gradle:1.4.1’

2. Once synced the Gradle dependencies now it’s time to authenticate with Firebase. This is a very interesting step as it has 3 ways to authenticate.

– Using Google account via Gradle Plugin

– Using Firebase service account credentials

– Using the Firebase CLI

For this learning, I will go with the sweet and short way via Gradle Plugin. Open your terminal and run the following command gradlew appDistributionLogin For Mac or Linux ./gradlew can be used

This will give you an authentication link. Use that link to sign in to your Google account. Once you give permission to access your Firebase project, the Gradle will generate a refresh token, which will be used by the plugin to authenticate with Firebase.

Now you need to set up the environment variable FIREBASE_TOKEN to the refresh token generated. Use the below command for setting up the variable. set FIREBASE_TOKEN= refresh-token For Mac or Linux, export can be used.

The following image has all the commands used for the authentication process.

3. Now you need to configure your distribution properties. If you want you can set this for build types and flavors both. Make those changes in the app’s build. Gradle file.

buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

            firebaseAppDistribution {

                releaseNotesFile="app/releaseNotes.txt"

                testers="tester1@gmail.com, tester2@gmail.com"

            }

            debug {

                minifyEnabled false

                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

                firebaseAppDistribution {

                    releaseNotesFile="app/releaseNotes.txt"

                   testers="tester1@gmail.com, tester2@gmail.com"

                }

            }

        }

    }

    flavorDimensions "version"

    productFlavors {

        demo {

           dimension "version"

            firebaseAppDistribution {

                releaseNotes="Demo version with limited features"

                testers="tester1@gmail.com, tester2@gmail.com"

            }

        }

        paid{

            dimension "version"

            firebaseAppDistribution {

                releaseNotes="Paid version has more features"

               testers="tester1@gmail.com, tester2@gmail.com"

           }

        }

    }

There are other parameters available for configuration like custom apkPath, testersFile and etc.

4. Time for the result. Let’s distribute the build to our listed testers. For this run the command. gradlew assembleRelease appDistributionUploadRelease It actually builds the selected variant and distributes it with testers. The above command is for the release version, you can try others as well, for that just replace Release to your version. For e.g. for debug you use gradlew assembleDebug appDistributionUploadDebug. Basically it’s a build variant you want to distribute.

Once you are able to upload APK successfully. Your testers will get an invite or new build notifications. The new testers will get an email invite from the email itself they can set up the app manager and start testing the builds.

You can check the tester’s build status on the Firebase dashboard itself.

coma

Final Word

I personally believe that this tool is very much helpful in increasing the productivity of the team and of an individual as well. It saves so much effort and time of the team and ultimately helps to deliver builds fast to your customers and get their valuable feedback in time.

Content Team

This blog is from Mindbowser‘s content team – a group of individuals coming together to create pieces that you may like. If you have feedback, please drop us a message on contact@mindbowser.com
We do publish often and our blogs are often accompanied by research and surveys. If you would like to be the first to receive an update on whenever we publish, subscribe to our newsletter.

The founder's survey report on "What Matters For Startup" is released - Get your copy and learn the trends of successful companies :)

Download Free eBook Now!

Get in touch for a detailed discussion.

Hear From Our 100+ Customers
coma

Mindbowser helped us build an awesome iOS app to bring balance to people’s lives.

author
ADDIE WOOTTEN
CEO, SMILINGMIND
coma

We had very close go live timeline and MindBowser team got us live a month before.

author
Shaz Khan
CEO, BuyNow WorldWide
coma

They were a very responsive team! Extremely easy to communicate and work with!

author
Kristen M.
Founder & CEO, TotTech
coma

We’ve had very little-to-no hiccups at all—it’s been a really pleasurable experience.

author
Chacko Thomas
Co-Founder, TEAM8s
coma

Mindbowser is one of the reasons that our app is successful. These guys have been a great team.

author
Dave Dubier
Founder & CEO, MangoMirror
coma

"Mindbowser was very helpful with explaining the development process and started quickly on the project."

author
Hieu Le
Executive Director of Product Development, Innovation Lab
coma

"The greatest benefit we got from Mindbowser is the expertise. Their team has developed apps in all different industries with all types of social proofs."

author
Alex Gobel
Co-Founder, Vesica
coma

Mindbowser is professional, efficient and thorough. 

author
MacKenzie R
Consultant at XPRIZE
coma

Very committed, they create beautiful apps and are very benevolent. They have brilliant Ideas.

author
Laurie Mastrogiani
Founder, S.T.A.R.S of Wellness
coma

MindBowser was great; they listened to us a lot and helped us hone in on the actual idea of the app.” “They had put together fantastic wireframes for us.

author
Bennet Gillogly
Co-Founder, Flat Earth
coma

"They're very tech-savvy, yet humble."

author
Uma Nidmarty
CEO, GS Advisorate, Inc.
coma

"Ayush was responsive and paired me with the best team member possible, to complete my complex vision and project. Could not be happier"

author
Katie Taylor
Founder, Child Life On Call
coma

“As a founder of a budding start up, it has been a great experience working with Mindbower Inc under Ayush's leadership for our online digital platform design and development activity."

author
Radhika Kotwal
Founder of Courtyardly
coma

The team from Mindbowser stayed on task, asked the right questions, and completed the required tasks in a timely fashion! Strong work team!

author
Michael Wright
Chief Executive Officer, SDOH2Health LLC
coma

They are focused, patient and; they are innovative. Please give them a shot if you are looking for someone to partner with, you can go along with Mindbowser.

author
David Cain
CEO, thirty2give