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')
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容