Android gradle 实战 项目实际案例

前言


众所周知,gradle是android项目的构建工具,项目的各种配置,打包都是通过gradle实现的,而且gradle可以简化我们很多重复操作。但是相信对于大多数小伙伴来说,gradle一直是深不可测或者说是对它一知半解,用到的时候都是通过搜索引擎照抄一下模版代码,能跑就行。有时候大家肯定也想深入了解它掌握它做更多的事情,但是苦于没有通俗易懂和实用的教程就草草放弃了,我也是一样,曾经通过官方文档和实物教材想去研究一下gradle,但是都被通篇大论和无实际用途的教程劝退了。直到今天,通过项目中的实际摸索和实践总结了一些实用技巧给大家分享一下,也帮助自己巩固一下知识。下面进入正题。

目录

  • 如何定义gradle全局常量并使用
  • android中gradle自带的任务有哪些?如何自定义task执行多个任务
  • 自定义gradle Plugin能做什么?如何自定义gradle Plugin

基础知识

android项目中的gradle结构和各自的作用

  1. 工程根目录的build.gradle
    它是用来配置整个项目的仓库地址和gradle tools版本,以及声明全局gradle脚本的公共属性,比如一些版本号之类的
  2. module目录的build.gradle
    用来配置module(app或者lib)的依赖库,编译版本,sdk版本,构建参数等等

使用方法

根据上面的目录顺序进行讲解:

1. 定义全局变量
有两种方法:一是在gradle.properties中直接定义变量,可以在工程中的任意build.gradle脚本中使用,如下:

在properties文件中声明
在这里插入图片描述

二:在工程目录的build.gradle文件中使用闭包声明变量,在子项目的build.gradle中通过rootProject.ext.xxxx的形式取值。如下:

在这里插入图片描述
在这里插入图片描述

通过此种用法,在实际项目中如果我们的工程是多module的形式,就可以全局定义项目的编译版本,sdk版本等等,完整配置如下:

在这里插入图片描述
在这里插入图片描述

2. gradle 自带哪些任务,都是干嘛的

在项目根目录下执行命令gradle :app:tasks会列出app module下面的所有task,

Android tasks

androidDependencies - Displays the Android dependencies of the project.
signingReport - Displays the signing info for the base and test modules
sourceSets - Prints out all the source sets defined in this project.

Build tasks

assemble - Assemble main outputs for all the variants.
assembleAndroidTest - Assembles all the Test applications.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
bundle - Assemble bundles for all the variants.
clean - Deletes the build directory.
cleanBuildCache - Deletes the build cache directory.
compileDebugAndroidTestSources
compileDebugSources
compileDebugUnitTestSources
compileReleaseSources
compileReleaseUnitTestSources

比如 assemble是打包的, clean androidDependencies等,比如最常用的,我们经常会在打包前clean一下工程,以免studio的缓存影响,这样我们就可以创建一个合并任务,先clean,再build,或者installDebug,具体写法如下:

文件:app module下的build.gradle文件

clean.doLast {
    println("-------clean finish-------")
}
// 这里没写assemble是因为assemble是个组合任务,如果写assemble.dependensOn(clean)的话。它的任务执行顺序是无序的,这个很关键!!!!!所以要打包前先执行clean任务的话要先查看assemble执行的第一个任务是什么,可以执行一次在studio的build控制栏里看到是 prebuild
preBuild.dependsOn(clean)

此时运行assemble命令的结果就是:在这里插入图片描述

如何创建自己的任务:

在build.gradle文件中这样写,然后sync一下,在右边的gradle任务拦:other分组下就会出现你的自定义任务“app”

task('app') {
	println('hello gradle ~')
}

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值