最新最全的安卓打包文件名修改,基于android studio 4.1 gradle 6.5
附加低版本gradle适配
app级别目录下build.gradle里的android{}
闭包内添加以下内容,代码里有详细说明,请参考
applicationVariants.all { variant ->
// 打包完成后复制到的目录
def outputFileDir = "${project.projectDir.absolutePath}/${variant.buildType.name}/${variant.flavorName}/${variant.versionName}"
// 此处可以根据需求配置相关渠道的默认输出路径,默认输出路径为“app/build/outputs/apk/${variant.flavorName}“”
// if (variant.buildType.name == "release"&&variant.flavorName == "online") {
// println("outputDirectory1:${variant.getPackageApplicationProvider().get().outputDirectory}")
// variant.getPackageApplicationProvider().get().outputDirectory = new File(outputFileDir)
// }
//确定输出文件名
def today = new Date()
def path = ((project.name != "app") ? project.name : rootProject.name.replace(" ","")) + "_" +
variant.flavorName + "_" +
variant.buildType.name + "_"+
variant.versionName + "_" +
today.format('yyyyMMddhhmm') +
".apk"
// 不同版本更改输出apk文件名方式
/**
* gradleVersion 小于4.0
*/
/* variant.getPackageApplicationProvider().get().outputScope.apkDatas.forEach { apkData ->
apkData.outputFileName = path
}*/
/* *//**
* gradleVersion 大于4.0
*//*
variant.outputs.forEach {
it.apkData.outputFileName = path
}*/
/**
* gradleVersion 大于4.1
*/
variant.outputs.forEach {
it.outputFileName = path
}
// 打包完成后做的一些事,复制apk到指定文件夹,复制mapping等
variant.assemble.doLast {
File out = new File(outputFileDir)
copy {
from variant.mappingFile
into out
rename {
String fileName -> "${variant.buildType.name}-${variant.flavorName}-mapping-${variant.versionName}.txt"
}
variant.outputs.forEach{ file->
copy{
from file.outputFile
into out
}
}
}
}
}