Release构建中菜单所用Drawable被删除的问题求助
解决方案:Release构建中保留菜单Drawable资源
针对你遇到的Release构建时菜单Drawable被意外删除的问题,试试以下几个排查和解决步骤:
确认Gradle配置的作用范围
确保你修改的是当前业务模块的build.gradle(不是根项目的build.gradle),并且没有其他构建配置(比如productFlavors)覆盖了release的shrinkResources和minifyEnabled设置。可以同步项目后,在Android Studio的Build Variants面板选中Release变体,查看对应的配置是否生效。修正资源保留文件的配置
你在res/raw下创建的资源保留文件,注意几点:- 文件名建议命名为
keep.xml(官方约定命名,避免识别问题) - 如果需要保留多个Drawable,用逗号分隔,支持通配符:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/ic_delete,@drawable/ic_menu_*" /> - 确保文件没有多余空行或格式错误,XML语法必须严格正确。
- 文件名建议命名为
检查菜单资源的引用方式
如果你的菜单图标是通过动态代码加载的(比如用getResources().getIdentifier()拼接资源名),即使关闭资源压缩,构建工具也可能因无法识别静态引用而误删资源。这种情况下,除了在keep.xml中保留,还可以在代码中添加一个无实际用途的静态引用,让构建工具感知到资源被使用:// 仅用于告知构建工具该资源被引用,无需实际调用 private static final int DUMMY_KEEP = R.drawable.ic_delete;清理构建缓存并重新构建
旧的构建缓存可能导致配置不生效,执行以下操作:- 点击Android Studio顶部菜单栏的
Build > Clean Project - 再执行
Build > Rebuild Project - 尝试重新生成Release包
- 点击Android Studio顶部菜单栏的
内容的提问来源于stack exchange,提问作者SirBzik
相关产品推荐
相关产品推荐

