Flutter项目集成google_mobile_ads依赖后构建失败求助
解决添加Google AdMob后Flutter应用构建失败的问题
看起来你碰到了两个关联的构建故障,咱们一步步拆解解决:
问题1:Android资源链接失败,<queries>元素报错
这个错误的根源是play-services-ads-lite-20.1.0用到了Android 11(API 30)新增的<queries>标签,但你的项目Android Gradle插件版本不支持这个元素。
修复步骤:
- 打开项目里的
android/build.gradle文件 - 把
com.android.tools.build:gradle的版本更新到至少3.5.0(推荐用更稳定的新版本,比如4.0.0+):dependencies { classpath 'com.android.tools.build:gradle:4.0.1' // 替换成更高兼容版本 // 其他依赖保持不变 } - 同步更新Gradle wrapper版本,打开
android/gradle/wrapper/gradle-wrapper.properties,修改distributionUrl:
(注:Android Gradle插件4.0.1对应Gradle 6.1.1,版本对应关系可以参考官方兼容表)distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
问题2:cloud_firestore_web的Gradle版本不兼容
旧版cloud_firestore_web:0.1.1+2对Gradle版本的要求和你当前环境冲突,再加上你的Firebase核心依赖版本偏旧,和新引入的google_mobile_ads兼容性不足。
修复步骤:
- 升级Firebase相关依赖到匹配的稳定版本,修改
pubspec.yaml:dependencies: # 保留其他原有依赖,更新以下Firebase相关项 cloud_firestore: ^0.16.0 firebase_auth: ^0.20.1 firebase_core: ^0.7.0 firebase_admob: ^0.11.0+1 google_mobile_ads: ^0.13.0 # 可保留或升级到最新稳定版 - 执行命令更新依赖:
flutter pub get - 清理项目缓存避免遗留问题:
flutter clean cd android && gradlew clean # Windows用户直接运行gradlew clean即可
额外注意事项
- 确保
android/app/build.gradle中的compileSdkVersion至少设置为30,才能支持<queries>标签:android { compileSdkVersion 30 // 其他配置不变 } - 检查
android/gradle.properties中的AndroidX配置是否正确开启:android.useAndroidX=true android.enableJetifier=true
完成以上操作后,重新运行flutter run应该就能顺利构建应用了。
内容的提问来源于stack exchange,提问作者Aagam Shah




