集成AdMob时Android清单合并失败问题求助
解决Firebase项目添加Play Services Ads依赖时的清单合并失败问题
问题原因
你的项目中,com.google.android.gms:play-services-measurement-api(来自Firebase Analytics)和com.google.android.gms:play-services-ads-lite(来自Play Services Ads)两个依赖的Manifest文件,都声明了android.adservices.AD_SERVICES_CONFIG属性,但指向的资源文件不同,导致Manifest合并时冲突。
直接解决方法
按照错误提示的建议,通过tools:replace属性强制覆盖冲突的资源:
- 添加tools命名空间:打开项目根目录下的
AndroidManifest.xml,确保根<manifest>标签包含tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
- 添加并覆盖冲突属性:在
<application>标签内部添加以下代码,选择你需要保留的资源(示例中使用Ads的gma_ad_services_config):
<application ...> <!-- 其他已有代码 --> <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource" /> </application>
如果想要保留Firebase Analytics的资源,只需将android:resource的值改为@xml/ga_ad_services_config即可。
更优方案:统一依赖版本
你已经使用了Firebase BOM来管理依赖版本,建议直接使用BOM维护的play-services-ads版本,避免版本不兼容导致的冲突。修改Module级build.gradle中的Ads依赖:
implementation 'com.google.android.gms:play-services-ads'
这样会自动匹配Firebase BOM(32.7.4)中指定的兼容版本,从根源减少类似冲突。
内容的提问来源于stack exchange,提问作者user23725517
相关产品推荐
相关产品推荐

