Android Manifest合并错误:android.adservices.AD_SERVICES_CONFIG问题求助
解决方案:Manifest合并冲突(play-services-measurement-api & play-services-ads-lite)
关于降级AGP和Google Ads SDK的有效性
降级操作是否能解决问题,得看冲突根源:
- 要是冲突是新版AGP/Ads SDK引入的Manifest条目兼容性问题,降级到之前稳定兼容的版本(比如AGP 8.X系列 + Ads SDK 21.X系列)大概率能解决。
- 但如果冲突是依赖传递导致的版本不一致(比如其他第三方库间接引入了不同版本的measurement-api),单纯降级可能没用,得先排查依赖树。
具体解决步骤
1. 排查依赖树,定位冲突版本
执行Gradle命令查看完整依赖树,找出measurement-api和ads-lite的实际引入版本以及来源:
./gradlew app:dependencies --configuration releaseRuntimeClasspath
重点关注com.google.android.gms:play-services-measurement-api和com.google.android.gms:play-services-ads-lite的版本,以及是哪个依赖间接引入的它们。
2. 强制统一依赖版本
在app模块的build.gradle(或build.gradle.kts)中添加强制统一规则,确保相关依赖版本一致:
configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-measurement-api:21.5.0' force 'com.google.android.gms:play-services-ads-lite:21.5.0' // 版本号可根据依赖树中找到的稳定兼容版本调整 } }
3. 明确处理Manifest冲突条目
如果是Manifest里的meta-data、provider等条目冲突,可在自己的Manifest中用tools:replace或tools:remove直接处理:
比如针对AD_SERVICES_CONFIG的冲突,尝试添加tools:replace属性:
<meta-data android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource" />
注意要在Manifest根标签里声明tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
4. 检查Google Ads初始化逻辑
如果之前注释了初始化代码,恢复后确保使用对应SDK版本的正确初始化方式:
MobileAds.initialize(this) { initializationStatus -> // 这里添加初始化完成后的回调逻辑 }
同时确认Manifest中已添加必要的基础权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
5. 清理缓存后重新构建
执行以下命令清理Gradle缓存,避免旧缓存残留导致的问题:
./gradlew clean build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Sahmbyte
相关产品推荐
相关产品推荐

