You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 开启minifyEnabled后发布的App无法找到库模块raw资源问题咨询

问题排查结论与修复方案

不是Android构建系统Bug

开启minifyEnabled true就丢失raw资源的现象,是Android构建流程资源压缩(Resource Shrinking) 特性的正常行为,并非系统缺陷。

问题根因

  • release构建变体开启minifyEnabled true代码混淆时,Android Gradle插件会默认同步开启shrinkResources true资源压缩能力,该能力会自动扫描全项目资源,判定无代码显式引用的资源会被直接从最终APK剔除,用于减小安装包体积。
  • 你的raw资源存放在独立Library模块中,或代码中使用动态方式获取资源ID,都会导致资源压缩工具无法识别该raw资源的引用关系,误判为无用资源将其移除。
  • 本地Android Studio使用签名配置构建安装正常,是因为本地构建默认使用debug变体,debug变体默认不会开启资源压缩逻辑,资源会完整保留。

推荐修复方案

优先选择配置资源保留规则,不会影响整体减包效果:

  • 在主App模块的res/raw目录下(目录不存在则手动创建)新建keep.xml文件
  • 添加如下规则明确指定需要保留的raw资源:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@raw/替换为你的raw资源文件名" />

多个需保留资源用逗号分隔即可,示例:tools:keep="@raw/file1,@raw/file2"。

替代方案(不推荐)

无需资源压缩能力时,可在release构建配置中显式关闭该功能:

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources false // 显式关闭资源压缩
            signingConfig signingConfigs.config
            // 其余原有配置保持不变
        }
    }
}

该方案会导致所有无用资源保留在APK中,会显著增加安装包体积。

内容的提问来源于stack exchange,提问作者M. Usman Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:27:02