该文章基于Android Studio 3.4.1,不保证不同Android Studio版本能正常兼容
Android Studio可通过以下方式输出正式签名包:
通过此方式打包,打包完成后正式文件放在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')
}
}
}
}
网友评论