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

在将 Eclipse 项目导入 Android Studio 之后,我看到了两个 build.gradle文件:

1 - <PROJECT_ROOT>\build.gradle
2 - <PROJECT_ROOT>\app\build.gradle

第一个版本更短,第二个版本包含 compileSdkVersion的定义,等等。

有两个单独的文件背后的目的是什么? 是否有单独的构建任务?

59623 次浏览

<PROJECT_ROOT>\app\build.gradle是特定于 应用程序模块的。

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

If you use another module in your project, as a local library you would have another build.gradle file: <PROJECT_ROOT>\module\build.gradle

对于顶级文件中的 例子,您可以指定以下常见属性:

buildscript {
repositories {
mavenCentral()
}


dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}


ext {
compileSdkVersion = 23
buildToolsVersion = "23.0.1"
}

在你的 app\build.gradle

apply plugin: 'com.android.application'


repositories {
mavenCentral()
}


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

From the official documentation:

Android Studio projects contain a top-level project Gradle build file that allows you to add the configuration options common to all application modules in the project. Each application module also has its own build.gradle file for build settings specific to that module.

Enter image description here

项目生成文件

<PROJECT_ROOT>\build.gradle or the 项目生成文件 is for the 整个项目, so it will be used for global project configurations. 典型的 Project Build File包含以下内容:

  • Buildscript 定义:
    • 储存库及
    • 依赖关系
  • 分级插件版本

默认情况下,项目级的 Gradle 文件使用 构建脚本来定义 Gradle 储存库依赖关系。这允许不同的项目使用不同的 Gradle 版本。支持的存储库包括 JCenter、 MavenCentral 或 Ivy。这个示例声明构建脚本使用 JCenter 存储库和一个类路径依赖构件,该构件包含 Gradle 1.0.1版的 Android 插件。


模块构建文件

<PROJECT_ROOT>\app\build.gradle或者 模块构建文件是用于 特定模块的,因此它将用于特定的模块级配置。 Module Build File包含以下内容:

  • 机器人设置
  • compileSdkVersion
  • BuildToolsVersion
  • defaultConfig and productFlavors
    • 清单属性,如 applicationId、 minSdkVersion、 targetSdkVersion 和测试信息
  • BuildType
    • build properties such as debuggable, ProGuard enabling, debug signing, version name suffix and testinformation
  • dependencies

你可以在这里阅读官方文件:

项目和模块生成设置