以下代码放在 build.gradle.kts的android节点内即可,部分变量可能需要改动
//以下在gradle中生成两个打包任务:Tasks-pack apk-packDebug和packRelease
//最后生成的apk位置在项目目录下的apks文件中
android.buildTypes.forEach {
buildType ->
// 拿到对应的任务类型名称,比如是release或debug,后面需要用它去拼接成对应的任务名称
val typeName = buildType.name
// 获取版本号versionName写到apk的民称中
val versionName = android.defaultConfig.versionName
// 往apk的名称中加入时间
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
val date = current.format(formatter)
// 按名称遍历productFlavors然后创建两个任务分别打release包和debug包
android.productFlavors.map { it.name }
.ifEmpty { listOf("") }
.forEach {
flavorName->
// 将获取到的名称首字母变为大写,比如:release变为Release
val combineName = "${flavorName.capitalize()}${typeName.capitalize()}"
// 为我们的任务命名:比如叫packRelease
val taskName = "pack$combineName"
// 找到打包的任务,比如release就是assembleRelease任务
val originName = "assemble$combineName"
// 创建一个任务专门做我们的自定义打包任务
project.task(taskName){
// 为任务分组
group = "Pack apk"
// 执行我们的任务之前会先执行的任务,比如,打release包时会先执行assembleRelease任务
dependsOn(originName)
// 执行完任务后,我们将得到的APK 重命名并输出到根目录下的apks文件夹下
doLast{
copy{
from(File(project.buildDir,"outputs/apk/$typeName"))
into(File(rootDir,"apks"))
rename{"RunboCapture-V-$versionName-$date.apk"}
include("*.apk")
}
}
}
}
}