安卓Gradle脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份

2,495 阅读1分钟
文件名:build.gradle (:app)
android {
	...
	// 打包完成复制一份到apk文件夹内
    this.project.afterEvaluate { project ->
        project.tasks.each { task ->
            if (task.toString().contains("assemble")) {
                task.doLast {
                    android.applicationVariants.all { variant ->
                        def simpleName = "app-${variant.buildType.name}.apk"
                        // 默认生成apk的文件夹
                        def workFolder = "${project.getProjectDir().path}/build/outputs/apk/${variant.buildType.name}"
                        // 定义目标文件夹
                        def destFolder = new File("${project.getProjectDir().path}/apk/${variant.buildType.name}")
                        try {
                            if (!destFolder.exists()) {
                                destFolder.mkdir()
                            }
                            copy {
                                from "${workFolder}/${simpleName}"
                                into "${destFolder}/"
                                rename {
                                    "property_v${versionName}_${versionCode}_${variant.buildType.name}.apk"
                                }
                            }
                        } catch (Exception e) {
                            print e
                        }
                    }
                }
            }
        }
    }
}

这样在每次assembleXXXX任务的时候, 或者Build的时候, 都会在打包完成后复制一份到/app/apk/下面