How to define common android properties for all modules using gradle
I create a simple project in AndroidStudio with a few modules. Each module's gradle script contains the following code:
android {
compileSdkVersion 18
buildToolsVersion "18.1.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 18
}
}
How can I move this code to the main build.gradle script (project's script)? This code is common for all the submodules.
Solution 1:
You could create a build.gradle
at the root of your project (i.e. the folder that contains all your modules), and use it to configure your rootProject.
For instance, if you have:
MyApp
- Module1/
- build.gradle
- Module2/
- build.gradle
- settings.gradle
You can add a build.gradle next to settings.gradle
.
In the example above you actually have 3 Gradle projects: Module1, Module2 and the rootProject.
So inside this build.gradle
, you could do:
// use the ext object to add any properties to the project
project.ext {
compileSdkVersion = 18
}
Then in your modules, you can do:
android {
// here we reference the root project with the "rootProject" object.
compileSdkVersion rootProject.ext.compileSdkVersion
}
Solution 2:
Defining this in the top-most build.gradle seems to work
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
}
}
}
}