Android构建报错:Manifest合并失败,需添加tools:replace="android:resource"到<property>元素
Android构建报错:Manifest合并失败,需添加tools:replace="android:resource"到元素
嘿,这个Manifest合并冲突我之前也碰到过,给你两个靠谱的解决办法:
方法一:按照错误提示修改AndroidManifest.xml
这是最直接的解决方式,步骤如下:
- 首先确认你的
AndroidManifest.xml根标签<manifest>里已经引入了tools命名空间,如果没有就加上:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
- 在Manifest的
<application>标签内添加(或者如果已经存在就修改)对应的<property>元素,加上tools:replace="android:resource"属性,让Gradle明确知道要覆盖冲突的资源配置:
<application> <!-- 其他原有代码 --> <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/ga_ad_services_config" <!-- 也可以换成@gma_ad_services_config,根据你想保留的资源选择 --> tools:replace="android:resource" /> </application>
出现这个错误的核心原因是:Firebase的play-services-measurement-api和AdMob的play-services-ads-lite两个库,在各自的Manifest里都声明了同一个AD_SERVICES_CONFIG属性,但指向了不同的XML资源,导致合并时冲突。加上tools:replace就是告诉构建工具,用你指定的这个资源来覆盖其他库的配置。
方法二:调整依赖版本(可选)
如果你不想修改Manifest,也可以尝试调整依赖版本来解决兼容性问题:
- 你当前用的Firebase BOM是33.1.0,对应的
play-services-ads版本可以试试和BOM管理的版本保持一致。不过因为Firebase BOM主要管理Firebase相关依赖,AdMob的版本可能需要单独匹配。你可以尝试升级或降级play-services-ads的版本,看看是否能避免这个冲突。不过相对来说,方法一更稳妥直接。
备注:内容来源于stack exchange,提问作者Daniele B
相关产品推荐
相关产品推荐

