如何避免Release构建APK中Drawable资源名称被混淆?
解决方案
要在保留代码混淆的同时阻止Release构建中的资源重命名,针对AGP 8.2.1 + Gradle 8.2的环境,你需要明确禁用资源重命名独立开关——这是AGP 8.x新增的控制项,和shrinkResources并不完全绑定,以下是具体配置:
1. 修改build.gradle配置
根据你使用的Groovy或Kotlin DSL,选择对应配置添加到Release构建块中:
Groovy 版本
android { buildTypes { release { minifyEnabled true // 保留代码混淆 shrinkResources false // 关闭资源压缩 // 核心:禁用资源重命名 resourceProguard { enabled false } // 兼容部分AGP版本的写法 androidResources { renameResources false } proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin DSL 版本
android { buildTypes { release { isMinifyEnabled = true // 保留代码混淆 isShrinkResources = false // 关闭资源压缩 // 核心:禁用资源重命名 resourceProguard { isEnabled = false } // 兼容部分AGP版本的写法 androidResources { renameResources = false } proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } }
2. 验证效果
构建Release APK后,通过APK分析器检查:
resources.arsc中的资源名称应与Debug构建完全一致res/drawables/等目录下的文件名不会被替换为随机命名格式
3. 额外排查点
如果配置后仍存在资源重命名,检查是否有第三方插件(如资源优化、多渠道打包插件)自动开启了资源重命名逻辑,需禁用对应插件的资源处理功能。
内容的提问来源于stack exchange,提问作者Omkar T
相关产品推荐
相关产品推荐

