I\'m building an app wit different build variant flavors. The flavors are \"Free\" and \"Paid\". I want to create some logic on my java classes which should only get trigger
I found best solution to get all values like APPLICATION_ID, BUILD_TYPE, FLAVOR, VERSION_CODE and VERSION_NAME.
Just write : Log.d("Application Id : ",BuildConfig.APPLICATION_ID); in your code. It will provide APPLICATION_ID of your flavor.
BuildConfig.java
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}
For more details you can refer this link : http://blog.brainattica.com/how-to-work-with-flavours-on-android/
I would use build configuration variables in your product flavors. Something along the lines of:
productFlavors {
free {
applicationId "com.example.free"
resValue "string", "app_name", "Free App"
versionName "1.0-free"
buildConfigField "boolean", "PAID_VERSION", "false"
}
paid {
applicationId "com.example.paid"
resValue "string", "app_name", "Paid App"
versionName "1.0-paid"
buildConfigField "boolean", "PAID_VERSION", "true"
}
}
Then after a build you can use:
if (BuildConfig.PAID_VERSION) {
// do paid version only stuff
}
You may have to do a sync/build on gradle after you add the attribute before you can compile and import the BuildConfig class that Gradle generates on your behalf.