前言
根据我们上一篇的介绍,我们知道了项目的结构以及构建的流程,根据上面的知识,我们知道了构建的规则实际就是我们写在build.gradle的内容。gradle android插件读取这个文件的内容后,最后完成构建工作。在讲解实际内容前,我先提供一个网站给大家,因为gradle android 插件 是通过dsl语言编写的,所以我们需要知道在什么地方获取相应的api。
7 build.gradle文件分析
https://docs.gradle.org/3.5/dsl/
https://google.github.io/android-gradle-dsl/current/
第一个网站是gradle官方提供的dsl,第二个网站是google提供的dsl查询手册
7.1 根目录的build.gradle文件
我们来打开根目录下面的build.gradle文件,这个文件是整个项目的配置文件,我们一般是放置一些基础的配置。
上图是build.gradle文件的内容
7.1.1 buildscript
buildscript{} 这个是基础配置,所有的子模块都会读取到这个配置里面的内容,当构建开始的时候,就开始读取这个 buildscript{} 里面的内容。
repositories{} 这个模块的内容告诉gradle 去什么地址下载第三方的库。
jcenter() 代表 https://bintray.com/bintray/jcenter
mavenCentral() 代表使用maven的服务器 https://search.maven.org/
但是有一个问题就是上面的两个网站在中国访问速度慢
buildscript {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
可以使用阿里云的maven服务
7.1.2 allprojects
allprojects 一般是配置所有模块的共同使用的内容。
allprojects {
repositories {
jcenter()
}
}
这个是默认的配置,代表所有的子modle都是从jcenter获取第三方包的。我建议大家可以改成下面的写法
allprojects {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
7.1.3 gradle插件以及gradle版本的关系
在根目录上面的build.gradle的版本我们可以设置gradle 插件的版本号,初学者经常搞不懂插件与gradle的关系。特别是个版本之间的关系,下面我们来讲讲插件设置的方式。
最后的序号就是插件的版本号,注意插件不是gradle,插件是根据gradle特性编写为完成需求的jar包,插件依赖于gradle。
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
如果你使用的是2.3版本的插件,必须使用gradle3.3以上的版本。
如果你使用的是2.2版本的插件,必须使用gradle2.14.1以上的版本。
基本原则就是对照上面的表,看看你使用的是什么版本的插件。
那gradle的版本设置在哪里设置呢?我们打开gradle文件夹找到gradle-wrapper.properties文件,如下图所示
最后我再介绍一个方法,经常有同学说打开一个项目很久,其实就是去下载gradle.我们可以根据上面的这个表来手动下载gradle。然后放置到相应的文件夹内,下面的两张图片是插件的文件目录和gradle的文件目录