Gradle-配置文件拆解

扔物线课程学习总结

  • Gradle配置文件拆解
  • Gradle项目结构,以及Task
  • Gradle执行的生命周期

1.buildscript 长得像配置的方法调用

buildscript {
    ext.kotlin_version = "1.4.21"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
buildscript({
    ext.kotlin_version = "1.4.21"
    repositories({
        google()
        jcenter()
    })
    dependencies({
        classpath("com.android.tools.build:gradle:4.1.1")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
    })
})
println("abc")
println "abc"

groovy 能传递方法 Closure

methodMissing

groovy 当调用方法方法没有在运行前确定,编译也不会检查,运行也可能不存在

gradle 开发调试

  • buildType 构建类型

打不同种类包,默认有release那种。

例如:

打测试包test然后会有测试的隐藏界面,

比如测试版加个小角标


image-20210605100908823.png

也可以创建文件夹,获取专属福利

main做大部分代码,debug(其他)做区别

image-20210605111218485.png
image-20210605111618854.png
  • productFlavors 产品风味

做不同产品定位,走向

如:免费版,付费版;中国版,国际版

如果有不同维度还要设置

  • flavorDimensions 风味维度

例如:付款,区域

在编译freeDebug

main+free+debug+freeDebug等,可以配置的非常精细

image-20210605124832915.png

还可以打包不同模块

gradle wrapper 包住gradle 本地有用,没有下载

setting.gradle 项目结构

task


image-20210605141917095.png

做一个task实用任务

提交代码改版本号

void bump(){
    def versionPropsFile = file('version.properties')
    def versionProps = new Properties()
    versionProps.load(new FileInputStream(versionPropsFile))
    def codeBumped = versionProps['VERSION_CODE'].toInteger() + 1
    versionProps['VERSION_CODE'] = codeBumped.toString()
    versionProps.store(versionPropsFile.newWriter(), null)
}

task bumpVersion() {
    doLast {
       bump()
    }
}

//依赖另外一个让他先执行
task bumpVersionAndNotify(dependsOn:bumpVersion) {
    doLast {
        println '升级完成'
    }
}

version.properties

#Sat Jun 05 14:44:14 CST 2021
VERSION_NAME=1.0.0
VERSION_CODE=1

例如打包 要执行好多个Task,Task依赖 Task依赖的依赖 是一个有向无环图

gradle生命周期

  • 初始化setting.gradle

  • 配置 生成有向无环图

  • 执行 执行Task

afterEvaluate {
    //插入第二三阶段代码
}

你可能感兴趣的:(Gradle-配置文件拆解)