五、build.gradle
5.1 apply plugin: 'com.android.application'
apply 是 Gradle 的一个方法,接收 map 类型的参数,map 的 key 值可以有三种:from, plugin, to
com.android.application 是 Android Gradle 插件中提供的一个唯一指向某个 Plugin 的 id。在 2.3.3 版本的 Android Gradle 插件中,这个 id 指向的类为 AppPlugin
apply plugin 意思是为当前项目的构建应用一个 Gradle 插件,至于应用哪个插件,可以通过指定一个唯一的 id 值即可,也可以直接指定插件类的类名,如:
//apply plugin: 'com.android.application'
//等效于
//apply plugin: com.android.build.gradle.AppPlugin
//同理
//apply plugin: 'com.android.library'
//等效于
//apply plugin: com.android.build.gradle.LibraryPlugin
上述代码中两种方式是等效的,因为 Android Gradle 插件已经通过一份配置文件,将这两者绑定在一起,使用者不清楚具体要用哪个插件类的话,那么可以直接使用跟它对应的 id 值即可,而且通过 id 值的方式也会更方便。
那么,为什么构建 Android 项目时都需要在 build.gradle 开头声明这么一句 apply plugin 应用某个插件呢?
上一篇中已经提到过了,本篇继续提一下。这之前,需要区分 Gradle 跟 Android Gradle 是两种概念,两个东西。
Android Studio 是采用 Gradle 来构建项目,而 Gradle 并不是为了构建 Android 项目而设计的,它也可以构建 C++ 项目等等,因此,Gradle 它只提供了构建项目的一些基本工作,如配置依赖库等等。
但 Gradle 扩展性很好,它提供了插件的概念,可以根据需要自行去扩展一些构建工作。
因此,Google 基于 Gradle 提供的插件接口,开发了一套 Android Gradle 插件,就是专门用来构建 Android 项目。
build.gradle 文件里的 android {} 代码块配置,就是 Android Gradle 插件提供的,而 dependencies {} 代码块配置则是 Gradle 原生就提供的了。
所以,如果开头不通过 apply plugin 声明需要应用 Android Gradle 的插件,而 build.gradle 里又使用到了 Gradle 没有提供的 android {} 配置,当然就会出错了。
当然,不仅仅是这点,构建 Android 项目过程中的很多工作,都是 Gradle 原生没有提供,都需要借助 Google 开发的 Android Gradle 插件。
5.2 android {}
官方文档:http://google.github.io/android-gradle-dsl/current/
不同的项目构建时,所需的配置可能不同,那么,设置这些配置项的入口就在 android {} 代码块中,一些必配项,在新建项目时,build.gradle 就已经自动生成了。当然,它还提供了很多可选的配置项,具体都有哪些,可以在官方文档中找,也可以直接看源码,还可以去网上搜索大神的博客。
官方文档.png
上图只截了一部分,官方文档肯定