升级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重新构建
- 点击Android Studio的
验证命名空间配置
Gradle Plugin 8+强制要求设置模块命名空间,检查build.gradle中的命名空间是否正确:android { namespace "com.your.package.name" // 其他配置 }错误的命名空间会导致无法正确引用第三方库的资源。
内容的提问来源于stack exchange,提问作者Rohaitas Tanoli
相关产品推荐
相关产品推荐

