集成firebase_admob时AndroidManifest报错与构建失败问题求助
排查修复方案
第一类问题:AAPT资源链接失败
你遇到的AAPT: error: unexpected element found in <manifest>报错,和Manifest里的AdMob元数据位置没有关系,核心是旧版firebase_admob: ^0.11.0+1的依赖链路和当前AGP、AndroidX规则不匹配:
- 该版本插件已经停止维护,传递依赖的
play-services-ads-lite 19.7.0要求最低compileSdk为33,项目如果用更低的compileSdk,就会出现Manifest合并解析错位,把本该在application节点下的元素误判到manifest根节点下,触发资源链接报错。
对应修复操作:
- 打开
android/gradle.properties,确认两个配置项已开启,不要等IDE自动提示补开:android.useAndroidX=true android.enableJetifier=true - 修改
android/app/build.gradle中的SDK版本配置,匹配ads依赖的最低要求:android { // 把原有的低版本compileSdk替换为34 compileSdkVersion 34 defaultConfig { // 保留原有业务配置不动,补充匹配的min/target SDK minSdkVersion 19 targetSdkVersion 33 } } - 清理本地损坏的缓存产物:删掉项目下的
android/.gradle、android/app/build目录,同时删掉Gradle缓存里对应损坏的transform文件,重新执行依赖同步,避免复用之前解析出错的play-services-ads-lite文件。 - 把Manifest中旧的Application配置替换掉:原配置里写的
android:name="io.flutter.app.FlutterApplication"是旧支持库版本的入口类,本身就不兼容AndroidX体系,直接删掉这个属性,用Flutter自动生成的适配入口即可,不需要手动指定旧类。
第二类问题:Jetifier启动后connectivity插件构建失败
出现根项目'connectivity'中不存在'assembleAarRelease'报错,是全局开启Jetifier后,旧版本connectivity插件的构建任务链路被打乱导致的——这类0.1.x版本的老插件本身没有适配AGP 7.x以上的构建规则,被Jetifier全局兼容扫描时就会出现任务缺失。
对应修复操作:
- 优先替换为官方维护的适配版本:把项目依赖里的旧
connectivity插件替换为connectivity_plus: ^3.0.x,该版本完全基于AndroidX开发,不需要Jetifier兼容,不会触发任务报错。 - 如果暂时不替换老插件,不要全局开启Jetifier:把
gradle.properties里的android.enableJetifier=true暂时关闭,在android/app/build.gradle的dependencies块增加统一的旧support库排除规则:configurations.all { exclude group: 'com.android.support', module: 'support-annotations' } - 确认
google-services.json文件放置路径为android/app/目录下,且JSON内登记的应用包名和项目的applicationId完全一致,没有大小写或拼写差异。你当前写在application节点末尾的AdMob APPLICATION_ID元数据位置是符合要求的,不需要调整。
内容的提问来源于stack exchange,提问作者Ajit Kumar Dutta
相关产品推荐
相关产品推荐

