Sebastien
Sebastien

Reputation: 4325

Android and Firebase: different environments for different testing cycles

I am currently developing my first Android application ever, and it is the Android/Kotlin version of an iOS application I already developed. I created 3 different Firebase projects to have independent realtime database instances for each environment:

When I was looking into plugging these 3 environments in my Android app, I read that I should use product flavors for that, so here is how I configured my build:

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.derbigum.approofreferences"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    flavorDimensions "dev", "qa", "prod"
    productFlavors {
        dev {
            dimension "dev"
            applicationId "com.derbigum.approofreferences.debug"
        }
        qa {
            dimension "qa"
            applicationId "com.derbigum.approofreferences.beta"
        }
        prod {
            dimension "prod"
            applicationId "com.derbigum.approofreferences"
        }
    }
}

And of course I created the corresponding subfolders in src to store the various versions of google-services.json I got for each project.

I did all my development with that and it worked so far: development data was created in the right database.

But now I want to do a first closed alpha release but I'm confused as to how I should generate my APK. I have only 2 build variants:

Maybe I made a mistake in configuring flavorDimensions? Maybe it's something else. Can someone please help me figure out if my setup is OK, and if so how I should go about building the closed alpha version of my app and release it to my internal users for testing?

Upvotes: 1

Views: 1551

Answers (1)

Doug Stevenson
Doug Stevenson

Reputation: 317750

I think what you want here is not three dimensions for three environments, but just one dimension for environment, with three flavors:

flavorDimensions "env"
productFlavors {
    dev {
        dimension "env"
        applicationId "com.derbigum.approofreferences.debug"
    }
    qa {
        dimension "env"
        applicationId "com.derbigum.approofreferences.beta"
    }
    prod {
        dimension "env"
        applicationId "com.derbigum.approofreferences"
    }
}

This will get you build variants for each environment.

Upvotes: 1

Related Questions