背景
在打包release的apk之后需要保留一份mapping文件。如果在混淆后的app发生崩溃,堆栈都是混淆情况下分析问题就很艰难。备份mapping是有必要的。
环境
AndroidStudio 2024.2.2kts版本插件版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zipplugins {id 'com.android.application' version '8.8.2' apply falseid 'com.android.library' version '8.8.2' apply falseid 'org.jetbrains.kotlin.android' version '2.1.0' apply false}
备份mapping的代码
在主模块的build.gradel.kts中
android {...applicationVariants.all {if (buildType.name == "release") {// 拦截 assembleRelease 任务完成之后执行assembleProvider.get().doLast {val mappingFile = mappingFileval versionName = versionName ?: "unknown"val outputDir = File(rootProject.projectDir, "mapping-backup/${name}-$versionName")outputDir.mkdirs()mappingFile?.let {val targetFile = File(outputDir, "mapping.txt")it.copyTo(targetFile, overwrite = true)println("✅ Copied mapping.txt to: ${targetFile.absolutePath}")} ?: run {println("⚠️ No mapping file found for variant: $name")}}}}...}

