Is it possible to declare a variable in Gradle usable in Java ? Basically I would like to declare some vars in the build.gradle and then getting it (obviously) at build time. Just like a pre-processor macros in C/C++…
An example of declaration would be something like that … :
JavaScript
x
android {
debug {
A_VAR_RETRIEVABLE_IN_JAVA = 42
}
release {
A_VAR_RETRIEVABLE_IN_JAVA = 42+52
}
}
Is there a way to do something like that ?
Advertisement
Answer
Here are two ways to pass value from Gradle to use in Java;
Generate Java Constants
JavaScript
android {
buildTypes {
debug {
buildConfigField "int", "FOO", "42"
buildConfigField "String", "FOO_STRING", ""foo""
buildConfigField "boolean", "LOG", "true"
}
release {
buildConfigField "int", "FOO", "52"
buildConfigField "String", "FOO_STRING", ""bar""
buildConfigField "boolean", "LOG", "false"
}
}
}
You can access them with BuildConfig.FOO
Generate Android resources
JavaScript
android {
buildTypes {
debug{
resValue "string", "app_name", "My App Name Debug"
}
release {
resValue "string", "app_name", "My App Name"
}
}
}
You can access them in the usual way with @string/app_name
or R.string.app_name