AGP 8.3.0 的 Manifest 合并失败解决方案
问题描述
升级到 Android Gradle 插件 (AGP) 8.3.0 后,构建时会出现 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:21.5.1] AndroidManifest.xml:32:13-58
is also present at [com.google.android.gms:play-services-ads-lite:22.6.0] AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at AndroidManifest.xml to override.
此错误发生在库依赖的清单文件合并过程中,项目自身的 AndroidManifest.xml
通常不包含 AD_SERVICES_CONFIG
属性。若不解决,将导致应用无法编译运行。
根本原因
谷歌服务的库文件存在冲突——play-services-measurement-api
和 play-services-ads-lite
都声明了相同的属性 android.adservices.AD_SERVICES_CONFIG
,但指向了不同的资源文件:
@xml/ga_ad_services_config
(Analytics 库)@xml/gma_ad_services_config
(Ads 库)
AGP 8.3.0 增强了清单合并检验规则,识别到这一冲突并终止构建。
解决方案
✅ 推荐方法:清单文件修复
修改应用的 AndroidManifest.xml
文件,强制指定统一资源:
在
<manifest>
标签添加tools
命名空间(如未设置):xml<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
在
<application>
标签内添加属性覆盖:xml<application> ... <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource" /> ... </application>
选择资源文件的依据
此处选择 gma_ad_services_config
(来自 Ads 库)是因为它同时支持Attribution API和Topics API,而 ga_ad_services_config
仅支持 Attribution API。
🔄 兼容方案:降级适配
若项目急需发布,可降级组件版本:
// 方案1:降级 AGP(gradle.properties)
androidGradlePluginVersion=8.2.2
// 方案2:调整 Ads 库版本(app/build.gradle)
implementation "com.google.android.gms:play-services-ads:22.2.0"
兼容方案风险
降级可能引发其他未知兼容问题,建议仅作临时措施
⬆️ 终极方案:升级谷歌服务库
在支持 AGP 8.3.0+ 的较新依赖中,谷歌已修复该问题:
// AGP 8.3.0+ 推荐搭配
implementation "com.google.android.gms:play-services-ads:24.0.0"
补充操作
若使用广告功能,请在 Application 类初始化 SDK:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
MobileAds.initialize(this);
}
}
版本兼容信息
组件 | 已修复问题的版本 |
---|---|
AGP | 8.8.2+ |
play-services-ads | 24.0.0+ |
根据 2025 年实际环境测试,AGP 8.8.2 + ads 24.0.0 组合已彻底解决此冲突,建议优先升级
总结建议
- 项目开发阶段 → 使用清单文件覆盖方案(推荐使用
gma_ad_services_config
) - 新版本适配阶段 → 升级至
play-services-ads:24.0.0+
- 紧急发布场景 → 临时降级至兼容版本组合
- 所有解决方案均需确保
<manifest>
中包含xmlns:tools
声明