I am using Gradle to build my Android application. I am trying to use some flags based on the build type (release or debug).
My Gradle file looks like this:
android {
buildTypes {
debug {
buildConfigField 'boolean', 'PREPROD', 'true'
buildConfigField 'boolean', 'STAGING', 'false'
}
release {
buildConfigField 'boolean', 'PREPROD', 'false'
buildConfigField 'boolean', 'STAGING', 'false'
}
}
}
And if I try to call BuildConfig.PREPROD
or BuildConfig.STAGING
I get a "Cannot resolve symbol" error.
The Gradle sync was successful, so I don't know if I forgot some steps in order to be able to use this feature?
The generated BuildConfig.java
file is the following (in build/source/buildConfig/debug/com.example.myapp
):
package com.example.myapp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String PACKAGE_NAME = "com.example.myapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 400;
public static final String VERSION_NAME = "";
}
Happened to me because I did not declared a String field properly.
I forgot the escaping characters. Changing from :
to
solved the problem.
Search for occurrences of BuildConfig. I had a rogue import of non-existant BuildConfig and the compiler instead of catching that pointed at a random line of code somewhere else!
Make sure you add your parameter also to the defaultConfig. You are probably running the default buildVarient while your parameter is defined in a speciffic buildVariant.
in the build gradle file use this:
Then, in the code use this:
Hope this helps, M.A :)