为什么 Android Studio 项目中有两个 build.gradle 文件

<PROJECT_ROOT>\app\build.gradle 特定于 app 模块。

<PROJECT_ROOT>\build.gradle 是一个顶级构建文件,你可以在其中添加所有子项目/模块共有的配置选项。

如果你在项目中使用另一个模块,作为本地库,你将拥有另一个 build.gradle 文件:<PROJECT_ROOT>\module\build.gradle

顶级构建文件

位于根项目目录中的顶级 build.gradle 文件定义了适用于项目中所有模块的构建配置。默认情况下,顶级构建文件使用 buildscript {} block 来定义项目中所有模块通用的 Gradle 存储库和依赖项。以下代码示例描述了在创建新项目后你可以在顶级 build.gradle 中找到的默认设置和 DSL 元素。

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

模块级构建文件

位于每个 <project>/<module>/目录中的模块级 build.gradle 文件允许你为其所在的特定模块配置构建设置。配置这些构建设置允许你提供自定义打包选项,例如其他构建类型和产品风格,并覆盖 main/ app 清单或顶级 build.gradle 文件中的设置。

apply plugin: 'com.android.application'

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

dependencies {
    //.....
}