Android集成play services出现Duplicate class zzhg重复类报错
该报错属于典型的Google Play Services依赖版本错配问题:依赖树中同时拉取了play-services-measurement-base:20.1.2和play-services-measurement-impl:20.0.2两个跨版本的同组库,两个库中存在同路径同名类,触发重复类编译错误。clean操作仅清理本地构建缓存,不会修正依赖拉取规则,因此无法解决问题。
按优先级依次尝试以下方案即可解决问题:
方案1:强制对齐measurement相关依赖版本
打开app模块的build.gradle文件(不是根目录下的build.gradle),在android配置块中添加依赖强制解析规则,统一所有相关measurement库的版本:android { // 保留原有compileSdk、defaultConfig、buildTypes等配置 configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-measurement-base:20.1.2' force 'com.google.android.gms:play-services-measurement-impl:20.1.2' force 'com.google.android.gms:play-services-measurement-sdk:20.1.2' } } }同步Gradle后重新编译即可。
方案2:升级插件到稳定版,修复自动版本对齐逻辑
你当前使用的Gradle插件是rc预览版、google-services插件版本偏低,二者都可能导致Play Services依赖自动对齐规则失效。打开根目录的build.gradle,将对应classpath替换为稳定版本:buildscript { repositories { google() mavenCentral() } dependencies { // 替换rc预览版为正式稳定版 classpath 'com.android.tools.build:gradle:7.1.0' // 升级google-services插件到支持20.x版本Play Services的稳定版 classpath 'com.google.gms:google-services:4.3.15' } }升级后插件会自动对同组Play Services依赖做版本对齐,不需要手动强制指定版本。
方案3:排查手动声明的依赖版本
检查所有模块中手动引入的com.google.android.gms组下的依赖、以及Firebase相关依赖,不要混合声明不同大版本的Play Services库。如果使用Firebase BoM管理版本,确保BoM版本和你引入的Play Services版本兼容,不要跨版本混用。
修改完成后执行Gradle依赖查看命令,确认版本对齐:
# Mac/Linux ./gradlew app:dependencies # Windows gradlew.bat app:dependencies
在输出的依赖树中搜索play-services-measurement关键字,确认所有相关依赖都解析为同一版本,即表示问题修复。
内容的提问来源于stack exchange,提问作者Mauro Stancato

