Friday, November 13, 2015

Configuring Gradle

Android studio uses new build system called Gradle. We can use it to build project and configure server urls, settings or replace assets.
1. Following example shows build.gradle file to change server url depending upon the build flavor.
I am using two flavors
1. devel
2. prod.
For simplicity I shall keep it simple without configuring it for signing. Both flavors define a config variable "HOST" with different value to be used, when apk is built. If developer chooses, to have "devel" build, it will come with "http://192.168.1.34:3000" as HOST.

productFlavors {
        devel {
            buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"'
        }

        prod {
            buildConfigField 'String', 'HOST', '"http://api.zuul.com"'

        }
    }

To access the config constant use following code.

String string = BuildConfig.HOST;


2. Following example shows how to replace java or asset files depending upon the product flavor.
As mentioned earlier, project uses two flavors namely "devel" and "prod". Our objective is to replace Constants.java and "ic_launcher.png". Each flavor will have different files. Prepare folder structure as shown:

Copy "ic_launcher.png" file in "devel.res.drawable". Put Constants.java file mentioned below in "devel.java.com.poc.gradleconfiguration".


package com.poc.gradleconfiguration;

public class Constants {

    public static String NAME = "This is development.";
}

Copy "ic_launcher.png" file in "prod.res.drawable". Put Constants.java file mentioned below in "prod.java.com.poc.gradleconfiguration".
package com.poc.gradleconfiguration;

public class Constants {

    public static String NAME = "This is prod.";
}
Don't put Constants.java file mentioned below in "main.java.com.poc.gradleconfiguration", as gradle will copy one of the above files here.
To use the constant use the following code.
String name = Constants.NAME;
Now simply select type build you want to make from build variants view and gradle will make sure you have correct copy of the Constants.java.

Android aar deployment in Maven - 2022

Introduction If you are working on android library project, you might be wondering how to publish it on Maven like this . Earl...