Android Manifest合并失败求助:AD_SERVICES_CONFIG资源冲突
问题描述
Manifest合并时触发以下错误:
Manifest merger failed : Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value=(@xml/ga_ad_services_config) from [com.google.android.gms:play-services-measurement-api:22.1.2] AndroidManifest.xml:32:13-58
is also present at [com.google.android.gms:play-services-ads-lite:22.5.0] AndroidManifest.xml:84:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at AndroidManifest.xml to override.
已按提示添加tools:replace属性,且已声明xmlns:tools="http://schemas.android.com/tools",但错误仍未解决。当前项目依赖com.google.android.gms:play-services-ads:22.5.0,AndroidManifest已配置广告应用ID的meta-data。
解决方法
1. 显式声明冲突<property>并覆盖资源
在AndroidManifest.xml的<application>标签内,直接添加冲突的property元素,通过tools:replace指定覆盖android:resource属性:
<application ...> <!-- 已有的广告ID配置 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX"/> <!-- 新增该行覆盖AD_SERVICES_CONFIG --> <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource"/> </application>
确保manifest根元素已包含tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
2. 统一Google Play服务依赖版本
冲突源于play-services-measurement-api(22.1.2)与play-services-ads-lite(22.5.0)版本不一致,强制统一版本可消除冲突:
在build.gradle.kts的dependencies块中添加版本约束:
dependencies { implementation("com.google.android.gms:play-services-ads:22.5.0") // 强制measurement系列依赖与ads版本对齐 constraints { implementation("com.google.android.gms:play-services-measurement-api:22.5.0") implementation("com.google.android.gms:play-services-measurement-base:22.5.0") } }
更推荐使用Google Play Services BOM统一管理所有服务版本,避免后续版本冲突:
dependencies { // 引入BOM,所有Google服务依赖自动使用统一版本 implementation(platform("com.google.android.gms:play-services-bom:20.1.0")) // 替换为最新可用版本 // 依赖无需指定版本号 implementation("com.google.android.gms:play-services-ads") }
3. 清理缓存并重建项目
修改配置后,清理旧构建缓存并重新编译:
- Android Studio操作:
Build→Clean Project→Rebuild Project - 命令行执行:
./gradlew clean assembleDebug
4. 排查并排除冲突依赖
若上述方法无效,通过依赖树找出引入旧版本measurement-api的来源:
./gradlew dependencies
找到对应依赖后,排除其中的冲突模块:
implementation("冲突依赖的组名:依赖名:版本") { exclude(group = "com.google.android.gms", module = "play-services-measurement-api") }
内容的提问来源于stack exchange,提问作者René

