Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keep flavors configs in separate .gradle files

Being short - is there a way to keep flavor configs in separate .gradle files?

And for more details - I'd like to have per flavor .gradle files (like flavorGermany.gradle, flavorUkraine.gradle, flavorItaly.gradle etc.) that will be included with 'apply from:' directive into main gradle. Each flavor .gradle will contain signing and build configs.

like image 632
Mykola Avatar asked Sep 14 '16 15:09

Mykola


2 Answers

Sure you can. Just place those files in app folder and then in your app folders build.gradle import those.

Your flavorGermany.gradle would look like this:

android {
    productFlavors {
        flavorGermany {}
    }
}

And then you import those in your build.gradle (app):

apply plugin: 'com.android.application'
apply from: 'flavorGermany.gradle'
apply from: 'flavorUkraine.gradle'
like image 145
vilpe89 Avatar answered Sep 19 '22 16:09

vilpe89


While configuring flavor signing in a separate .gradle file I got a sticky error telling:

flavorGermany.gradle: 1: unable to resolve class com.android.ide.common.signing.KeystoreHelper

In flavorGermany.gradle the KeystoreHelper is used this way:

android {
    signingConfigs {
        germany {
            storeFile = file(KeystoreHelper.defaultDebugKeystoreLocation());
            storePassword = "some_password";
            keyAlias = "some_key";
            keyPassword = "some_other_key";
        }
    }
    // other configs ...
}

To fix this I had to add this before the 'android' definition:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        // Android gradle plugin
        classpath 'com.android.tools.build:gradle:2.1.3'
    }
}

With this change the import error has gone and the Android Studio was able to recognize the additional flavor described in a separate .gradle file.

like image 44
Mykola Avatar answered Sep 19 '22 16:09

Mykola