Android build system
组成部分
Android build system 的组成部分:Gradle + Android plugin for Gradle
android app打包流程(即构建流程):
Gradle:用于构建项目,即设置app打包过程的各种配置,如使用哪些SourceCode、哪些依赖、是否打签名包等。
Gradle 插件:使系统能支持运行Gradle。与Gradle 是独立运行的,因此需要独自下载。
Build Tools:Android 构建的相关工具都在这里面,位于./sdk/build-tools/目录下,它提供了类似aapt、dx这样的工具,gradle则是使用这样的工具来完成相应的构建任务。
Gradle和Gradle插件是分开的,那它们各自是如何下载的呢?
Gradle 、Gradle插件和Build Tools的下载安装
1、 Gradle
打开一个项目时,AS会根据项目中gradle > wrapper > gradle-wrapper.properties 文件中的distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip 设置的Gradle版本去查找。
那么AS是在什么地方查找的呢?
通过在Android Studio中依次点击File > Settings > Build, Execution, Deployment > Gradle,我们可以锁定当前项目使用的Gradle的位置。
- 若选中Use default gradle wrapper(recommended)
,则设置的Gradle位置为Service directory path
中的路径;
- 若选中Use local gradle distribution
,则设置的Gradle位置为Gradle home
中的路径。
注:Service directory path是全局级的,Use default gradle wrapper(recommended)与Use local gradle distribution是项目级的,优先级高于全局级的设置。
通常我们都是选择Use default gradle wrapper(recommended)。
选择Use default gradle wrapper(recommended) 之后,AS根据gradle-wrapper.properties 文件中的配置去service directory path下查找(后面介绍gradle-wrapper.properties会讲到),若没有则通过distributionUrl 去下载Gradle。
AS自动下载Gradle会很慢,两种解决办法:
1. 修改gradle-wrapper.properties 中的Gradle版本:在打开项目前,修改gradle-wrapper.properties 中distributionUrl 的值为service directory path目录下已有的Gradle版本。打开项目后,有可能还要更改Gradle插件、build tools等的版本,详情看 “Android Studio、Gradle、Gradle插件、build tools它们的版本关系”。
2. 手动下载Gradle:参考[Android Studio系列(五)] Android Studio手动配置Gradle的方法(windows /Linux适用)
2、 Gradle 插件
都是在项目的build.gradle 文件(The Top-level Build File)中设置依赖,自动下载的,不需要fq:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'//Gradle插件版本
}
}
只要是能通过设置依赖获得的基本都不用fq,因为国内网能正常访问到在repository中设置的jCenter()和maven()等。
3、 Build Tools
在SDK Manager 中下载各个版本到本地,然后在模块的build.gradle文件(The Module-level Build File)中设置:
android {
buildToolsVersion "27.0.3"
}
Android Studio、Gradle、Gradle插件、Build Tools它们的版本关系
关系:AS版本决定Gradle插件版本,Gradle插件版本决定Gradle版本(因为Gradle的运行必须由Gradle插件支持)和Build Tools 版本。
安装AS时,会自动安装相应版本的Gradle插件和Gradle,但可以根据项目需求更改到更高的版本。Gradle插件版本能否更改为低版本的还不知道,需要的话自己去试试。
Plugin version | Required Gradle version |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |