androidgradle

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

  • 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
    }