以下代碼放在 build.gradle.kts的android節(jié)點內(nèi)即可痛垛,部分變量可能需要改動
//以下在gradle中生成兩個打包任務(wù):Tasks-pack apk-packDebug和packRelease
//最后生成的apk位置在項目目錄下的apks文件中
android.buildTypes.forEach {
buildType ->
// 拿到對應(yīng)的任務(wù)類型名稱凿可,比如是release或debug,后面需要用它去拼接成對應(yīng)的任務(wù)名稱
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然后創(chuàng)建兩個任務(wù)分別打release包和debug包
android.productFlavors.map { it.name }
.ifEmpty { listOf("") }
.forEach {
flavorName->
// 將獲取到的名稱首字母變?yōu)榇髮懀热纾簉elease變?yōu)镽elease
val combineName = "${flavorName.capitalize()}${typeName.capitalize()}"
// 為我們的任務(wù)命名:比如叫packRelease
val taskName = "pack$combineName"
// 找到打包的任務(wù)片迅,比如release就是assembleRelease任務(wù)
val originName = "assemble$combineName"
// 創(chuàng)建一個任務(wù)專門做我們的自定義打包任務(wù)
project.task(taskName){
// 為任務(wù)分組
group = "Pack apk"
// 執(zhí)行我們的任務(wù)之前會先執(zhí)行的任務(wù),比如畔柔,打release包時會先執(zhí)行assembleRelease任務(wù)
dependsOn(originName)
// 執(zhí)行完任務(wù)后咖驮,我們將得到的APK 重命名并輸出到根目錄下的apks文件夾下
doLast{
copy{
from(File(project.buildDir,"outputs/apk/$typeName"))
into(File(rootDir,"apks"))
rename{"RunboCapture-V-$versionName-$date.apk"}
include("*.apk")
}
}
}
}
}