背景
今天有个同学,需要打包release之后,保留多次打包的apk文件。在远古时候版本,只要修改release文件夹下的文件,和默认不同名,就能达到保留效果。
由于目前as升级之后进行了‘优化’,这个功能已经修复了。
目的1
当我们打包release之后,进行apk文件重命名。更好的识别这个包的来源。
如何修改打包后的apk名字?
在之前我发布过文章,还有具体的代码。直接复制即可。
传送门:
release打包后修改apk名字
时间格式化那个方法,可以稍微调整下。
def buildTimes() {
return new Date().format("yyyyMMdd HH_mm")
}
格式化具体到分钟。
目的2
现在每次打包都会清空release文件夹。我们无法避免这个事情。我们可以在打包完成之后,把这个文件夹复制到其他地方保存。
//项目根目录下build.gradle在末尾增加代码
subprojects() {
//assembleRelease这个任务,就是我们普通的打包任务。打release包。
def releaseTasks = project.getTasksByName("assembleRelease", false)
copyApkFile(releaseTasks, project)
}
def copyApkFile(Set<Task> tasks, Project project) {
def fromDir = "/build/outputs/apk/release"
for (task in tasks) {
def dir = project.getProjectDir().getAbsolutePath()
println "assemble release dir = $dir"
//我们目前存放打包后apk的目录
def apkDir = dir + fromDir
def file = new File(apkDir)
if (file.exists()) {
def isDelete = delete(apkDir)
println "del: $isDelete"
}
//在task执行完成之后
task.doLast {
if (file.exists()) {
//将生成的apk整个目录复制到我们指定位置
copy {
println "copy dir = ${file.getAbsolutePath()}"
from apkDir
into rootProject.getRootDir().getAbsolutePath() + "/apk/"
}
}
}
}
}
在上面,我们定制了assembleRelease任务的包的位置:项目目录下/apk/中。
我的命名方式,类型,版本名字,版本号,年月日,时分。
如何打包?
双击这个任务就可以了。
|