为什么Android Studio项目中有两个build.gradle文件?
将Eclipse项目导入到Android Studio后,我看到两个build.gradle
文件:
1 - <PROJECT_ROOT>\build.gradle 2 - <PROJECT_ROOT>\app\build.gradle
第一个版本较短,第二个版本包含compileSdkVersion
定义等。
有两个单独的文件的目的是什么? 是否有单独的构build任务?
<PROJECT_ROOT>\app\build.gradle
是特定于应用程序模块的 。
<PROJECT_ROOT>\build.gradle
是一个“顶级构build文件” ,您可以在其中添加对所有子项目/模块通用的configuration选项。
如果你在你的项目中使用另一个模块,作为一个本地库你可能会有另一个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 }
从官方文档:
Android Studio项目包含一个顶级项目Gradle构build文件,允许您添加项目中所有应用程序模块通用的configuration选项。 每个应用程序模块也有自己的
build.gradle
文件,用于构build特定于该模块的设置。
项目构build文件
<PROJECT_ROOT>\build.gradle
或项目构build文件适用于整个项目,因此将用于全局项目configuration。 典型的项目构build文件包含以下内容:
- buildscript定义:
- 存储库和
- 依赖
- Gradle插件版本
默认情况下,项目级别的Gradle文件使用buildscript来定义Gradle 存储库和依赖项 。 这允许不同的项目使用不同的Gradle版本。 支持的存储库包括JCenter,Maven Central或Ivy。 此示例声明构build脚本使用JCenter存储库以及包含Gradle版本1.0.1的Android插件的类path依赖项工件。
模块构build文件
<PROJECT_ROOT>\app\build.gradle
或模块构build文件是为特定的模块,所以它将用于特定的模块级configuration。 模块构build文件包含以下内容:
- android设置
- compileSdkVersion
- buildToolsVersion
- defaultConfig和productFlavors
- 清单属性,如applicationId,minSdkVersion,targetSdkVersion和testing信息
- buildTypes
- 构build诸如可debugging,ProGuard启用,debugging签名,版本名称后缀和testing信息等属性
- 依赖
你可以在这里阅读官方文档:
项目和模块构build设置