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


101

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

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

第一个版本较短,第二个版本包含 compileSdkVersion,等等。

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


Answers:


72

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

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

如果您在项目中使用另一个模块,则作为本地库,您将拥有另一个build.gradle文件: <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
}

+1谢谢,我们会暂时接受您的回答。是否build.gradle必须存在文件才能触发构建?另外,顶级构建文件是否调用子级文件?(尽管没有任何证据。)
Sabuncu 2014年

如果要使用gradle构建项目,则build.gradle文件是必需的。Android Studio不需要gradle,但强烈建议使用。顶层文件不调用子文件;gradle适用于任务,但是很难在注释中进行解释。
Gabriele Mariotti 2014年

非常感谢Gabriele,这会让我入门。
Sabuncu 2014年

1
尤其是该rootProject.ext.compileSdkVersion结构非常有用。
Sabuncu 2014年

2
使用ext {...}绕行是否重要,还是应该将android插件和compileSdkVersion直接应用于顶层构建文件?
PhilLab 2015年

17

根据官方文档:

Android Studio项目包含一个顶级项目Gradle构建文件,该文件可让您添加该项目中所有应用程序模块共有的配置选项。每个应用程序模块还具有自己的build.gradle文件,用于特定于该模块的构建设置。

在此处输入图片说明

项目构建文件

<PROJECT_ROOT>\build.gradle项目构建文件适用于整个项目,因此它将用于全局项目配置。典型的项目构建文件包含以下内容:

  • buildscript定义:
    • 储存库和
    • 依存关系
  • Gradle插件版本

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


模块构建文件

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

  • android设置
    • 编译版本
    • buildToolsVersion
  • defaultConfig和productFlavors
    • 清单属性,例如applicationId,minSdkVersion,targetSdkVersion和测试信息
  • buildTypes
    • 构建属性,例如可调试,启用ProGuard,调试签名,版本名称后缀和测试信息
  • 依存关系

您可以在此处阅读官方文档:

项目和模块构建设置

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.