添加Admob后遭遇Android Manifest合并失败错误,寻求解决方案
解决添加AdMob后「unable to merge android manifest」错误的常见方案
我之前帮朋友排查过一模一样的问题,给你整理几个最容易踩坑的点和解决办法,你可以挨个试试:
1. 权限/组件重复声明冲突
AdMob的SDK会自动在Manifest里注入一些必要的权限(比如INTERNET、ACCESS_NETWORK_STATE)和组件(比如广告相关的<activity>),如果你的项目Manifest里已经手动加过这些内容,就会触发合并冲突。
- 解决步骤:
- 打开你的
AndroidManifest.xml,检查有没有和AdMob重复的权限或组件标签; - 如果有重复,直接删掉项目里手动添加的那部分;
- 要是不想删除,可以在冲突的标签里加上
tools:replace="android:name"(记得先在Manifest根标签里引入xmlns:tools="http://schemas.android.com/tools")。
- 打开你的
2. Google服务依赖版本不兼容
AdMob属于Google Play Services生态的一部分,如果项目里其他Google服务依赖(比如play-services-location、play-services-analytics)和AdMob SDK版本不一致,很容易导致Manifest合并失败。
- 解决步骤:
- 打开Module级别的
build.gradle文件; - 推荐用
play-services-bom来统一管理所有Google服务的版本,这样不用逐个指定版本号,避免冲突:dependencies { implementation platform('com.google.android.gms:play-services-bom:20.1.0') implementation 'com.google.android.gms:play-services-ads' // 其他Google服务依赖直接写包名,不用加版本号 implementation 'com.google.android.gms:play-services-location' } - 如果不想用BOM,就确保所有
com.google.android.gms:play-services-*开头的依赖版本号完全一致。
- 打开Module级别的
3. Manifest合并规则被禁用
有些项目可能会在配置里意外禁用了Manifest自动合并功能,这也会导致报错。
- 解决步骤:
- 检查
gradle.properties文件里有没有android.enableManifestMerger=false,如果有改成true; - 或者在Module的
build.gradle里明确开启合并:android { packagingOptions { mergeManifests = true } }
- 检查
4. 第三方库与AdMob冲突
除了AdMob本身,项目里的其他第三方库(比如广告中介、统计工具)也可能修改Manifest,和AdMob的配置产生冲突。
- 解决步骤:
- 打开你的
AndroidManifest.xml,点击底部的Merged Manifest标签,这里会展示最终合并后的Manifest,并且用红色标注冲突的位置; - 根据标注的冲突信息,调整对应的标签,比如用
tools:replace覆盖冲突的属性,或者删除第三方库中不必要的Manifest配置。
- 打开你的
如果以上方法都没解决问题,你可以把Merged Manifest里的冲突详情贴出来,这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者Ali




