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 … :
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
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
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