R8压缩Android资源文件是否有映射文件?能否不重命名压缩?
问题解答
一、能否将重命名后的资源文件名反向映射回原名?
- 官方无现成反向映射文件:
mapping.txt仅对应Kotlin/Java代码的混淆映射,resources.txt仅记录资源使用情况,均不包含资源文件名的重命名映射关系。R8/AGP在资源重命名过程中不会生成这类映射记录,因为资源的引用依赖编译生成的资源ID而非文件名,构建系统默认不会保留文件名映射。 - 手动匹配方案:可通过对比资源文件的内容或哈希值(如MD5)来对应原名。重命名后的资源文件内容与原文件完全一致,你可以将解压APK后的资源与本地项目中的原始资源逐一对比哈希值,从而匹配回原始文件名。
二、如何仅压缩资源而不重命名文件名?
在Release构建配置中添加禁用资源重命名的配置即可,修改后的Gradle配置如下:
release { minifyEnabled true shrinkResources true // 禁用资源文件名重命名,仅保留资源压缩功能 resources { minifyRenames false } proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-rules.pro' signingConfig signingConfigs.release }
该配置会保留原始资源文件名,同时正常压缩未被使用的资源,满足你的需求。
内容的提问来源于stack exchange,提问作者Nilzor
相关产品推荐
相关产品推荐

