文章目录
gradle 学习
gradle生命周期
生命周期
初始化阶段=》配置阶段=》执行阶段
生命周期回调
![在这里插入图片描述](https://img-blog.csdnimg.cn/2
获取project
获取所有project
this.projects()
def projects() {
this.getAllprojects().eachWithIndex {
project, index ->
if (index ==0 ) {
println "root = ${project.name}"
} else {
println "sub ${project.name}"
}
}
}
获取子project
this.subProject()
def subProject() {
this.getSubprojects().eachWithIndex {
Project entry, int i ->
println "sub project ${entry.name}"
}
}
得到父的project
方式一,该方式不能在父project调用会报错
this.getParentProject()
def getParentProject() {
def name = this.getParent().name
println "parent = ${name}"
}
方式二,该方式可以在父project调用
this.rootProject()
def rootProject() {
def name = this.rootProject.name
println "root name ${name}"
}
对某一project进行设置
添加plugin、dependencies
project('app') {
Project project ->
apply {
ObjectConfigurationAction objectConfigurationAction ->
// objectConfigurationAction.plugin('com.android.library')
}
project.afterEvaluate {
dependencies {
DependencyHandler dependencyHandler ->
dependencyHandler.add('implementation', 'com.google.code.gson:gson:2.6.2')
}
}
}
apply {
ObjectConfigurationAction objectConfigurationAction ->
// objectConfigurationAction.plugin('com.android.library')
}
apply是追加插件,如果已经存在com.android.application,如继续追加com.android.library插件会报错
配置当前工程和所有子工程
allprojects {
group 'com.answer'
version '1.0.0-release'
}
println "aaa" + project("app").group
配置子project,不包括当前project
subprojects {
Project project ->
if(project.getPlugins().hasPlugin('com.android.library')) {
apply from: '../publishToMaven.gradle'
}
}
判断子project是不是library,如果是,就增加发不到maven仓库功能、
扩展
在根工程使用ext
ext {
compileSdkVersion = 29
libAndroidx = 'androidx.appcompat:appcompat:1.2.0'
}
子工程使用根工程的扩展函数
方式一
android {
compileSdkVersion this.rootProject.compileSdkVersion
buildToolsVersion "29.0.2"
方式二
因为是继承关系,所以可以省略掉rootProject
android {
compileSdkVersion this.compileSdkVersion
buildToolsVersion "29.0.2"
导入文件使用扩展函数
创建一个common.gradle文件
在跟工程进行引用
在子工程进行使用
使用属性
文件操作
文件路径
查找文件
相对于当前的project工程开始查找
println buildContent("common.gradle")