更新AGP 7.0.2后APK/res目录结构是否发生变化?
问题解答
你看到的APK/res目录特殊结构不是加密,是Android Gradle Plugin(AGP)7.0及以上版本默认启用的资源路径缩短优化特性导致的,和targetSdkVersion 31无直接关联。
特性原理
- 该优化是AGP 7.0新增的资源包瘦身方案,会在打包阶段将res目录下多层子目录中的所有资源文件扁平化收纳到res根目录,同时将文件名替换为短哈希字符串
- 优化的核心作用是削减
resources.arsc资源表中存储的长路径字符串体积,通常可以让APK整体体积减少几十KB到几百KB不等,同时还能小幅降低资源加载时的路径解析开销
不同工具展示差异的原因
- 7zip、Android Studio的APK分析器仅直接读取APK压缩包的原始文件结构,不会解析资源映射关系,所以展示的是优化后的短路径结构
- Apktool反编译时会自动解析APK内置的
resources.arsc资源映射表,将短哈希命名的资源还原回原始的目录结构和文件名,因此你看到的是正常的项目资源结构
关闭该优化的方法
如果需要保留APK中原始的res目录结构,可在项目根目录的gradle.properties文件中添加如下配置:
android.enableResourceOptimizations=false
配置后重新打包即可恢复AGP 4.x版本的资源目录结构。
内容的提问来源于stack exchange,提问作者L.Nam
相关产品推荐
相关产品推荐

