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

升级AdMob至23.4.0+后Release构建触发R8缺失类错误求解决方案

解决AdMob 23.4.0+版本Release构建时R8缺失类的问题

针对升级AdMob SDK到23.4.0及以上版本后,Release构建触发R8缺失android.media.LoudnessCodecController及其内部类的错误,除降级外,可采用以下两种可行方案:

方案1:添加R8保留规则(推荐)

在应用模块的proguard-rules.pro文件中添加以下规则,告诉R8忽略缺失类的警告并保留相关定义:

# 适配AdMob SDK引用的缺失系统类
-dontwarn android.media.LoudnessCodecController
-dontwarn android.media.LoudnessCodecController$OnLoudnessCodecUpdateListener
-keep class android.media.LoudnessCodecController { *; }
-keep interface android.media.LoudnessCodecController$OnLoudnessCodecUpdateListener { *; }

添加后重新执行Release构建即可,该方案精准针对问题类,不会影响其他混淆规则。

方案2:全局关闭R8缺失类检测(激进方案)

若方案1无效,可在项目根目录的gradle.properties中添加以下配置,让R8遇到缺失类时不终止构建:

android.r8.failOnMissingClasses=false

注意:此配置会屏蔽所有缺失类的错误提示,可能掩盖其他潜在问题,仅建议在确认无其他依赖缺失时使用。

问题背景

该错误源于AdMob SDK 23.4.0+的内部代码com.google.android.gms.internal.ads.zzsp引用了仅在部分Android系统版本中存在的LoudnessCodecController类,R8在混淆时检测到类缺失并终止构建,且23.5.0、23.6.0版本仍存在此问题。

复现步骤

  • 创建默认配置的新Android项目
  • 在app模块的build.gradle.kts中,设置android.buildTypes.release.isMinifyEnabled = true,并添加依赖api("com.google.firebase:firebase-ads:23.4.0")(或更高受影响版本)
  • 在Build Variants中切换构建类型为Release
  • 执行Build → Build App Bundle(s)/APK(s) → Build Bundle(s),构建将失败并触发相同错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:08:25