接入Google AdMob后导入InterstitialAd报cannot find symbol错误如何解决?
导入InterstitialAd类编译报错解决方案
报错信息如下:
error: cannot find symbol import com.google.android.gms.ads.InterstitialAd; ^ symbol: class InterstitialAd location: package com.google.android.gms.ads
报错产生原因
- 核心原因是Google AdMob 20.0.0及更高版本对插屏广告API做了破坏性更新:原
com.google.android.gms.ads.InterstitialAd类被完全移除,相关功能迁移到了新的包路径下,原有导入语句直接失效。 - 次要可能原因:项目Gradle中AdMob依赖配置缺失、多依赖版本冲突、Gradle同步未完成。
排查修复步骤
- 第一步:确认AdMob依赖版本
打开app模块下的build.gradle文件,查看com.google.android.gms:play-services-ads依赖的版本号:- 若版本号≥20.0.0,删除原有旧导入语句,替换为新版导入:
import com.google.android.gms.ads.interstitial.InterstitialAd; import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback; - 若不想调整业务代码,可直接将依赖版本降级到19.8.0,配置如下:
implementation 'com.google.android.gms:play-services-ads:19.8.0'
- 若版本号≥20.0.0,删除原有旧导入语句,替换为新版导入:
- 第二步:适配新版API(仅使用20.0.0+版本时需要)
新版插屏广告不再支持直接创建实例,需通过异步load方法加载,示例代码:AdRequest adRequest = new AdRequest.Builder().build(); InterstitialAd.load(上下文, "你的插屏广告单元ID", adRequest, new InterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull InterstitialAd interstitialAd) { // 加载成功,保存返回的interstitialAd实例,需要展示时调用interstitialAd.show(activity)即可 } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // 加载失败逻辑处理 } }); - 第三步:重新同步构建项目
修改完成后执行File > Sync Project with Gradle Files同步依赖,再执行Build > Clean Project清理缓存后重新编译即可。
内容的提问来源于stack exchange,提问作者Mostafa Hydarzadeh
相关产品推荐
相关产品推荐

