KTS 脚本
方式一
val apkBaseName: String = "VoiceAssistant"
allprojects {
project.extra.apply {
set("apkBaseName", apkBaseName)
}
}
android {
applicationVariants.all {
val apkBaseName = project.ext.get("apkBaseName") as String
val moduleName = project.name
val apkName = if (apkBaseName.isNotBlank()) {
"${apkBaseName}_${moduleName}_${versionName}.apk"
} else {
"${moduleName}_${versionName}.apk"
}
if (buildType.name == "release") {
assembleProvider.get().doLast {
project.copy {
val fromDir = packageApplicationProvider.get().outputDirectory.asFile.get().absolutePath
val outDir = File(project.rootDir, "outputs")
from(fromDir) {
include("**/*.apk")
}
into(outDir)
rename {
println("> Task :copy from ${fromDir} into ${File(outDir, apkName)}")
apkName
}
}
}
}
}
}
方式二
tasks.register<Copy>("copyReleaseApk") {
println("> Task :register copyReleaseApk")
val apkBaseName = project.ext.get("apkBaseName") as String
val moduleName = project.name
val versionName = android.defaultConfig.versionName
val apkName = if (apkBaseName.isNotBlank()) {
"${apkBaseName}_${moduleName}_${versionName}.apk"
} else {
"${moduleName}_${versionName}.apk"
}
val fromDir = File(project.buildDir, "outputs/apk/release")
val outDir = File(project.rootDir, "outputs")
from(fromDir) {
include("*.apk")
}
into(outDir)
rename {
println("> Task :copy from $fromDir into ${File(outDir, apkName)}")
apkName
}
}
tasks.whenTaskAdded {
if (name == "assembleRelease") {
finalizedBy("copyReleaseApk")
}
}
Gradle
android {
applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "Factory" + "-" + buildType.name + "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk"
}
variant.assemble.doLast {
File outDir = new File('release')
variant.outputs.forEach { file ->
copy {
from file.outputFile
into outDir
}
}
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步