扔物线课程学习总结
- 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然后会有测试的隐藏界面,
比如测试版加个小角标
也可以创建文件夹,获取专属福利
main做大部分代码,debug(其他)做区别
- productFlavors 产品风味
做不同产品定位,走向
如:免费版,付费版;中国版,国际版
如果有不同维度还要设置
- flavorDimensions 风味维度
例如:付款,区域
在编译freeDebug
main+free+debug+freeDebug等,可以配置的非常精细
还可以打包不同模块
gradle wrapper 包住gradle 本地有用,没有下载
setting.gradle 项目结构
task
做一个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 {
//插入第二三阶段代码
}