Gradle build for set of Android projects (including libraries)

android, build, build.gradle, gradle, multi-module

Solution

You can use your `build.gradle` in root, or you can define some values in `gradle.properties` in root folder to achieve your scope.

For example:

root/`build.gradle`:

ext {
    compileSdkVersion = 19
    buildToolsVersion = "19.0.3"
}

module/`build.gradle`:

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
}

OR using properties

root/`gradle.properties`:

VERSION_NAME=1.0.1
VERSION_CODE=11

module/`build.gradle`:

android {

    defaultConfig {
        versionName project.VERSION_NAME
        versionCode Integer.parseInt(project.VERSION_CODE)

    }

Problem

I have 2 Android apps with 5 Android modules (Android library project). Total 7 Eclipse projects. I want to enable Gradle build for them. I added `build.gradle` in the root folder and listed all project in `settings.gradle` ``` include ':app1' include ':app2' ... ``` However I discovered that I need to copy-paste section below in every one of 7 project ``` android { compileSdkVersion 19 buildToolsVersion "19.0.3" defaultConfig { minSdkVersion 1 targetSdkVersion 19 versionCode 1 versionName "1.0" } ... // and so on like source folders configuration } ``` Reason: when I add `apply plugin: 'android'` inside root `build.gradle` (see Could not find method android() in root of multimodule project), then I can't `apply plugin: 'android-library'` for libraries projects (see https://stackoverflow.com/questions/23864292/minimal-gradle-configuration-for-android-library-in-multimodule-project) But it is what I want to avoid, having different version of Android and Android tools specified in different places. How can I minify this configuration to have as many things as possible in one `build.gradle` config file.

Original source