ProGuard applymapping修改mapping.txt后,签名APK未应用新映射规则
解决applymapping修改后映射规则不生效的操作方案
- 先核对配置引用关系:检查build.gradle中
applymapping指向的文件路径,确认你修改的映射文件就是构建流程实际引用的文件;同时排查是否存在产品渠道、自定义构建变体层级的重复applymapping配置,这类配置优先级高于全局配置,会覆盖你修改的全局规则,导致新规则不生效。 - 清除IDE Clean无法覆盖的全量构建缓存:
- 关闭Android Studio,删除项目根目录下的
.gradle隐藏全局缓存文件夹 - 删除项目内所有模块的
build目录,重点清理两类历史残留:app/build/outputs/mapping/下的旧混淆输出、app/build/intermediates/下的构建中间产物
- 关闭Android Studio,删除项目根目录下的
- 执行跳过缓存的强制构建:不要使用IDE自带的构建触发按钮,在项目根目录打开终端执行对应命令,强制跳过Gradle从本地缓存拉取旧混淆产物的逻辑:
- Windows系统执行:
gradlew.bat clean assembleRelease --no-build-cache - macOS/Linux系统执行:
./gradlew clean assembleRelease --no-build-cache
- Windows系统执行:
- 核心原因说明:Android Gradle Plugin 7.0以上版本默认使用R8替代原生ProGuard执行混淆流程,R8会对混淆任务的所有输入计算哈希值,只要哈希匹配就会直接复用缓存的旧混淆结果,不会重新读取映射规则。仅执行IDE的Clean Project操作,只会清空模块build目录,不会清除Gradle全局构建缓存,自然无法触发新规则的应用。
内容的提问来源于stack exchange,提问作者nashihu
相关产品推荐
相关产品推荐

