React Native Admob插件适配最新RN版本构建失败,如何解决?
我之前在升级到最新版React Native时也碰到过一模一样的问题,本质是你用的react-native-admob库版本太陈旧,和新版React Native的Android API不兼容导致的——具体来说,报错里的@Override注解标记的方法,在新版的父类中已经不存在或者方法签名发生了变化,所以编译器判定这个注解无效,直接抛出错误。
先把你遇到的报错信息贴出来方便对照:
D:\projects\fortuna\node_modules\react-native-admob\android\src\main\java\com\sbugert\rnadmob\RNAdMobRewardedVideoAdModule.java:89: error: method does not override or implement a method from a supertype
@Override
^
1 error:react-native-admob:compileReleaseJavaWithJavac FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':react-native-admob:compileReleaseJavaWithJavac'.
下面给你两种可行的修复方案:
方案一:改用维护中的官方替代库(推荐)
旧版的react-native-admob已经停止更新很久了,完全跟不上React Native和Google Ads SDK的迭代节奏。Google官方推荐使用社区维护的react-native-google-mobile-ads库,这是专门适配新版技术栈的广告插件。操作步骤如下:
- 先卸载旧库:
npm uninstall react-native-admob - 安装新库:
npm install react-native-google-mobile-ads - 按照新库的配置指引完成Android和iOS端的权限、广告ID等基础配置
- 替换项目中旧的Admob API调用代码,比如把原来的
RewardedVideoAd相关逻辑换成新库的RewardedAd类即可
方案二:手动修改旧库代码(临时救急)
如果暂时不想替换库,可以直接修改报错的文件来临时解决问题:
- 找到路径
D:\projects\fortuna\node_modules\react-native-admob\android\src\main\java\com\sbugert\rnadmob\RNAdMobRewardedVideoAdModule.java - 打开文件定位到第89行,把那一行的
@Override注解删掉 - 重新运行构建命令:
react-native run-android --variant release
⚠️ 注意:这种方法只是临时修复,下次执行npm install或者重新安装依赖时,修改的代码会被覆盖,所以长期来看还是推荐方案一。
内容的提问来源于stack exchange,提问作者Sergo Kupreishvili

