11、gradle中的api解析(一)

一、工程结构解析

1、单单从目录上来看,我们的工程是一个project下面,有多个module模块。
2、如果从每个module的构成来看,每个module下面都包含有build.gradle文件,也就是说其实每个module也是一个project。build.gradle文件是判断project的关键和标志。
3、使用命令gradlew project可以查看输出,输出的结果是一个root project(根工程)下面包含多个project,根project就是用于管理子project的。每个子project就是对应最终的一个输出的(比如每个子project输出一个aar,jar)。
在这里插入图片描述

二、Project API组成

gradle生命周期api、project相关api、file相关api、task相关api、属性相关api、其它api

1、project相关api
在这里插入图片描述在这里插入图片描述
获取ParentProject要在子project当中执行,如果已经是根project,则获取到的值为空。
在这里插入图片描述
在parent project中统一配置子project的公共参数
在这里插入图片描述
可以单独为所有子工程进行配置,比如打包aar上传到maven仓库的功能
在这里插入图片描述
2、相关属性api
通过查看源码,可以看到Project所定义的属性,这里定义的属性并不多。但是我们却可以通过扩展属性的方法,自定义属性。
在这里插入图片描述
第一种方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
定义方法升级:
在这里插入图片描述
调用方法就变成了:

compileSdkVersion this.rootProject.compileSdkVersion
implementation this.rootProject.libAndroidDesign
//当然调用方法也可以与第一种方法当中相同,这是为什么呢?
//因为所有的子project都继承于根project,所以父project里面定义的属性,
//当然能够在子project当中直接调用了
compileSdkVersion this.compileSdkVersion
implementation this.libAndroidDesign

定义方法再升级:
创建一个独立的gradle文件,专门用于存放各版本信息
在这里插入图片描述
只需要在根project当中引入文件即可

apply from: this.file('commonVersion.gradle')
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.android.buildToolsVersion

第二种定义方法:
定义到gradle.properties当中,根据名称就可以看出,这是gradle的属性。但这里面只能定义key=value形式,不能定义闭包的形式
在这里插入图片描述
在这里插入图片描述

作者:沧水巫云
博客:http://blog.csdn.NET/amir_zt/
以上原创,转载请注明出处,谢谢。
https://blog.csdn.net/amir_zt/article/details/113877122

猜你喜欢

转载自blog.csdn.net/u011635351/article/details/113877122
今日推荐