携手创作,共同成长!这是我参与「掘金日新计划 · 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,就可以直接运行,我们点击一下直接运行一下,具体操作如图所示:
运行后我们就会看到HelloWorld的打印
Gradle Wrapper
Wrapper其实就是Gradle的一层包装,便于在开发中统一版本,避免多人开发因Gradle版本不统一造成的不必要问题
在Android项目中,Gradle的配置在gradle-wrapper.properties文件中,所有任务都会在这个文件中配置,那我们来看看该文件的配置
| 字段名 | 说明 |
|---|---|
| distributionBase | 下载的Gradle压缩包解压后存储的主目录 |
| distributionUrl | Gradle发行版压缩包的下载地址 |
| distributionPath | 相对于distributionBase的解压后的Gradle的解压包的路径 |
| zipStorePath | 同distributionPath,只不过是存放zip压缩文件包的 |
| zipStoreBase | distributionBase,只不过是存放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
distributionUrl是Gradle的下载路劲,如果在运行./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'
}