Android build system:构建系统的组成及其原理

本文详细介绍了Android构建系统,包括其组成部分:Gradle和Android plugin for Gradle。讨论了Gradle的下载安装,以及与Gradle插件、Build Tools之间的关系。还阐述了Gradle的构建配置文件,如Settings File、Build File,特别是Source sets在app构建过程中的作用。同时,提到了Gradle-wrapper.properties文件在版本统一管理中的重要性。
摘要由CSDN通过智能技术生成

Android build system


组成部分

Android build system 的组成部分:Gradle + Android plugin for Gradle

android app打包流程(即构建流程):
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是项目级的,优先级高于全局级的设置。
Gradle存放位置
通常我们都是选择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
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值