gradle拷贝生成apk文件到指定目录

该文章基于Android Studio 3.4.1,不保证不同Android Studio版本能正常兼容

Android Studio可通过以下方式输出正式签名包:

image.png

通过此方式打包,打包完成后正式文件放在app/release目录,mapping文件放在app/build/outputs/mapping/release目录。查找起来相对麻烦并且每次重新打包这些文件都会被覆盖。因此需要能将这些文件拷贝到指定目录归档。

在app/build.gradle添加以下代码即可实现打包完成后自动导出

tasks.whenTaskAdded { task ->
    if (task.name.equalsIgnoreCase("assembleRelease")) {
        // 如果是assembleRelease任务,在最后执行导出apk以及mapping目录到指定目录
        task.doLast {
            outputReleaseFile()
        }
    }
}
void outputReleaseFile() {
    android.applicationVariants.all { variant ->
        // 如果是正式版打包
        if (variant.name.equalsIgnoreCase("release")) {
            File outputPath = new File("$rootDir" + File.separator + "release_app" + File.separator
                    + android.defaultConfig.versionName)
            println(String.format('拷贝生成文件到指定目录[%s]', outputPath.getAbsolutePath()))
            // 拷贝apk文件
            copy {
                from variant.outputs[0].outputFile
                into outputPath
                // 重命名导出名称
                rename {
                    'account_system' + variant.name + '_' + android.defaultConfig.versionName + ".apk"
                }
            }

            // 拷贝mapping目录
            copy {
                from variant.mappingFile.getParentFile()
                into new File(outputPath, 'mapping')
            }
        }
    }
}

你可能感兴趣的:(gradle拷贝生成apk文件到指定目录)