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

升级Gradle Plugin至8+后无法找到R.id.exo_pause等资源ID求助

解决Gradle Plugin 8+下ExoPlayer exo_play/exo_pause资源找不到的问题
  • 检查R8混淆规则
    Gradle Plugin 8+默认开启了R8 full模式,会自动移除未被直接引用的资源。如果你的代码是通过Resources.getIdentifier()这类动态方式获取exo_play、exo_pause的资源ID,R8会判定这些资源未被使用并删除。
    解决:在proguard-rules.pro或consumer-rules.pro中添加保留规则:

    -keep class com.google.android.exoplayer2.ui.R$drawable {
        public static int exo_play;
        public static int exo_pause;
    }
    
  • 确认ExoPlayer UI模块依赖
    确保build.gradle中正确引入了包含控制按钮资源的exoplayer-ui模块,Gradle Plugin 8+对依赖的资源解析更严格:

    implementation "com.google.android.exoplayer:exoplayer-ui:${exoPlayerVersion}"
    

    不要只引入核心播放模块,遗漏UI模块会导致资源缺失。

  • 清理缓存并重建项目
    插件升级后可能存在缓存冲突,按以下步骤操作:

    • 点击Android Studio的File > Invalidate Caches...,选择Invalidate and Restart
    • 删除项目根目录的.gradle、build文件夹,以及各模块下的build文件夹
    • 执行命令./gradlew clean build重新构建
  • 验证命名空间配置
    Gradle Plugin 8+强制要求设置模块命名空间,检查build.gradle中的命名空间是否正确:

    android {
        namespace "com.your.package.name"
        // 其他配置
    }
    

    错误的命名空间会导致无法正确引用第三方库的资源。

内容的提问来源于stack exchange,提问作者Rohaitas Tanoli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:52:14