patternjavaCritical
Is it possible to declare a variable in Gradle usable in Java?
Viewed 0 times
possiblegradlejavadeclarevariableusable
Problem
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 ... :
Is there a way to do something like that ?
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 ... :
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 ?
Solution
Here are two ways to pass value from Gradle to use in Java;
Generate Java Constants
You can access them with
Generate Android resources
You can access them in the usual way with
Generate Java Constants
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.FOOGenerate Android resources
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_nameCode Snippets
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"
}
}
}android {
buildTypes {
debug{
resValue "string", "app_name", "My App Name Debug"
}
release {
resValue "string", "app_name", "My App Name"
}
}
}Context
Stack Overflow Q#17197636, score: 875
Revisions (0)
No revisions yet.