Android Perché ci sono due file build.gradle in un progetto Android Studio?


Esempio

<PROJECT_ROOT>\app\build.gradle è specifico per il modulo app .

<PROJECT_ROOT>\build.gradle è un "file di build di livello superiore" in cui è possibile aggiungere opzioni di configurazione comuni a tutti i sottoprogetti / moduli.

Se utilizzi un altro modulo nel tuo progetto, come libreria locale avresti un altro file build.gradle : <PROJECT_ROOT>\module\build.gradle

Nel file di livello superiore è possibile specificare proprietà comuni come blocco di script o alcune proprietà comuni.

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
       classpath 'com.android.tools.build:gradle:2.2.0'
       classpath 'com.google.gms:google-services:3.0.0'
    }
}

ext {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.1"
}

Nell'app app\build.gradle si definiscono solo le proprietà per il modulo:

apply plugin: 'com.android.application'


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

dependencies {
    //.....
}