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.
To access the config constant use following code.
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:
To use the constant use the following code.
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".
Don't put Constants.java file mentioned below in "main.java.com.poc.gradleconfiguration", as gradle will copy one of the above files here.package com.poc.gradleconfiguration; public class Constants { public static String NAME = "This is prod."; }
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.