重学Android之----Gradle(一)

173 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第十天,点击查看活动详情

重学Android之----Gradle(一)

前言

我们在开始学习Geadel之前,我们应该先了解什么是Gradel,Gradel是一个开源构建自动化工具,设计灵活。详情了解请看官网 什么是 Gradle?

Gradle版 HelloWorld

我们在新建项目的时候会发现在app.gradle中发现一下代码:

task clean(type: Delete) {
    delete rootProject.buildDir
}

定义一个Clean的任务,这个任务是Delete类型,delete rootProject.buildDir 相当于 delete(rootProject.buildDir),这是Groovy语法,在Groovy中只要不引起歧义,函数的调用是可以去掉括号。

上面的代码的意思是删除项目的根目录build目录

我们来实现一下Hello World

我们在app.gradle中添加以下代码

task hello{
    println 'Hello World'
}

添加以上代码后,在AS中就会出现一个绿色三角,或者右键方法名,点击run,就可以直接运行,我们点击一下直接运行一下,具体操作如图所示:

1660118408375.jpg

运行后我们就会看到HelloWorld的打印

1660140330621.jpg

Gradle Wrapper

Wrapper其实就是Gradle的一层包装,便于在开发中统一版本,避免多人开发因Gradle版本不统一造成的不必要问题

在Android项目中,Gradle的配置在gradle-wrapper.properties文件中,所有任务都会在这个文件中配置,那我们来看看该文件的配置

字段名说明
distributionBase下载的Gradle压缩包解压后存储的主目录
distributionUrlGradle发行版压缩包的下载地址
distributionPath相对于distributionBase的解压后的Gradle的解压包的路径
zipStorePath同distributionPath,只不过是存放zip压缩文件包的
zipStoreBasedistributionBase,只不过是存放zip压缩文件包的

我们在开发过程中,是比较关注distributionUrl字段,这个字段决定了你的项目中依赖那个Gradle版本。例如 services.gradle.org/distributio…我们通常会把bin改为all,这样在开发过程中,我们就可以看Gradle的源代码了。

例如,在最新的Android Stuido中,默认的Gradle版本是7.+

distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

distributionUrlGradle的下载路劲,如果在运行./gradlew的时候发现Android Studio一直被卡着不动,可能是因为官方的Gradle的地址被封,建议修改其他的镜像地址,或者是VPN代理来下载

自定义Wrapper Task

gradle-wrapper.properties是由Wrapper Task生成的,那么我们是否可以自定义配置Wrapper Task达到我们配置gradle-wrapper.properties的目的呢?我们只需要在build.gradle构建文件中录入如下脚本代码:

task wrapper(type:wrapper){
    gradeVersion = '7.3'
}

这样我们在执行gradle warpper的时候,就会默认生成7.3版本的warpper了,而不用使用--gradle version 7.3进行指定了,同样也可以配置其他参数:

task wrapper(type:wrapper){
    gradeVersion = '7.3'
    srchiveBase = 'GRADLE_USER_HOME'
    srchivePath = 'wrapper/dists'
    distributionPath = 'wrapper/dists'
    distributionUrl ='https\://services.gradle.org/distributions/gradle-7.3.3-all.zip'
}