升级Expo SDK及依赖并集成react-native-google-mobile-ads后,Android端EAS构建出现Gradle未知错误
遇到这种模糊的Gradle构建错误真的挺闹心的,我之前升级Expo SDK集成广告库的时候也踩过类似的坑,给你几个实用的排查方向,应该能帮你揪出问题所在:
先深挖Gradle日志的具体错误信息
错误提示里说要看"Run gradlew"阶段的日志,这才是关键!EAS构建的日志里,你往下翻找到Gradle执行的详细输出,真正的错误原因(比如依赖版本冲突、AdMob配置遗漏、权限不匹配之类的)都会藏在这里。我之前碰到过就是日志里明确标了react-native-google-mobile-ads和Expo SDK自带的Google服务依赖版本冲突,只是外层提示了个模糊的"未知错误"。确认广告库与Expo SDK的版本兼容性
升级Expo SDK后,一定要对应上react-native-google-mobile-ads的兼容版本。不同版本的Expo SDK对第三方库的版本要求不一样,比如Expo SDK 49+可能需要用v12以上的广告库,版本不匹配的话Gradle在依赖解析阶段就会炸锅。你可以去这个库的官方文档里找版本兼容表,或者直接看Expo的第三方库兼容说明。核对Google Ads的配置是否完整正确
升级SDK后,原来的配置可能因为构建流程变化失效了,你可以逐一检查:- 确认
android/app/src/main/AndroidManifest.xml里是否正确添加了AdMob的App ID元数据,格式是<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="你的AdMob App ID"/>,别写错了名称或者值 - 检查
app.json或app.config.js里的expo.android.config.googleMobileAds配置项,有没有把App ID填对,有没有开启相关权限
- 确认
清理构建缓存试试
缓存的旧依赖经常会搞事情,你可以先试试用eas build -p android --clear-cache清理EAS的远程构建缓存,本地也可以运行npx expo install --fix让Expo自动修复依赖版本不匹配的问题,如果是裸工作流的话,还可以跑npx expo prebuild --clean重新生成Android原生文件。用expo doctor检查配置问题
运行npx expo doctor,它会自动扫描你的项目配置、依赖版本是否符合当前Expo SDK的要求,有问题会直接给出修复提示,比如某个依赖需要升级,或者某个配置项缺失,跟着提示改就行。
备注:内容来源于stack exchange,提问作者ShivamQmr

